LoadUserProfileA-Funktion (userenv.h)
Lädt das profil des angegebenen Benutzers. Das Profil kann ein lokales Benutzerprofil oder ein Roamingbenutzerprofil sein.
Syntax
USERENVAPI BOOL LoadUserProfileA(
[in] HANDLE hToken,
[in, out] LPPROFILEINFOA lpProfileInfo
);
Parameter
[in] hToken
Typ: HANDLE
Token für den Benutzer, das von der Funktion LogonUser, CreateRestrictedToken, DuplicateToken, OpenProcessToken oder OpenThreadToken zurückgegeben wird. Das Token muss über TOKEN_QUERY, TOKEN_IMPERSONATE und TOKEN_DUPLICATE Zugriff verfügen. Weitere Informationen finden Sie unter Zugriffsrechte für Access-Token-Objekte.
[in, out] lpProfileInfo
Typ: LPPROFILEINFO
Zeiger auf eine PROFILEINFO-Struktur . LoadUserProfile schlägt fehl und gibt ERROR_INVALID_PARAMETER zurück, wenn der dwSize-Member der Struktur nicht auf sizeof(PROFILEINFO)
festgelegt ist oder wenn das lpUserName-ElementNULL ist. Weitere Informationen finden Sie in den Hinweisen.
Rückgabewert
Typ: BOOL
TRUE , wenn erfolgreich; andernfalls FALSE. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Die Funktion schlägt fehl und gibt ERROR_INVALID_PARAMETER zurück, wenn der dwSize-Member der Struktur bei lpProfileInfo nicht auf sizeof(PROFILEINFO)
festgelegt ist oder wenn das lpUserName-ElementNULL ist.
Hinweise
Wenn sich ein Benutzer interaktiv anmeldet, lädt das System automatisch das Profil des Benutzers. Wenn ein Dienst oder eine Anwendung die Identität eines Benutzers angibt, lädt das System das Profil des Benutzers nicht. Daher sollte der Dienst oder die Anwendung das Profil des Benutzers mit LoadUserProfile laden.
Dienste und Anwendungen, die LoadUserProfile aufrufen, sollten überprüfen, ob der Benutzer über ein Roamingprofil verfügt. Wenn der Benutzer über ein Roamingprofil verfügt, geben Sie seinen Pfad als lpProfilePath-Member von PROFILEINFO an. Um den Roamingprofilpfad des Benutzers abzurufen, können Sie die NetUserGetInfo-Funktion aufrufen und die Informationsebene 3 oder 4 angeben.
Nach erfolgreicher Rückgabe ist das hProfile-Element von PROFILEINFO ein Registrierungsschlüsselhandle, das für den Stamm der Struktur des Benutzers geöffnet wird. Es wurde mit Vollzugriff (KEY_ALL_ACCESS) geöffnet. Wenn ein Dienst, der die Identität eines Benutzers angibt, die Registrierungsdatei des Benutzers lesen oder schreiben muss, verwenden Sie dieses Handle anstelle von HKEY_CURRENT_USER. Schließen Sie das hProfile-Handle nicht. Übergeben Sie ihn stattdessen an die UnloadUserProfile-Funktion . Diese Funktion schließt das Handle. Sie sollten sicherstellen, dass alle Handles für Schlüssel in der Registrierungsstruktur des Benutzers geschlossen sind. Wenn Sie nicht alle geöffneten Registrierungshandles schließen, kann das Profil des Benutzers nicht entladen werden. Weitere Informationen finden Sie unter Sicherheit und Zugriffsrechte für Registrierungsschlüssel und Registrierungsstruktur.
Beachten Sie, dass Sie dafür verantwortlich sind, die Registrierungsstruktur des Benutzers mit der LoadUserProfile-Funktion in den HKEY_USERS Registrierungsschlüssel zu laden, bevor Sie CreateProcessAsUser aufrufen. Dies liegt daran, dass CreateProcessAsUser das Profil des angegebenen Benutzers nicht in HKEY_USERS lädt. Dies bedeutet, dass der Zugriff auf Informationen im HKEY_CURRENT_USER Registrierungsschlüssel möglicherweise keine Ergebnisse erzeugt, die mit einer normalen interaktiven Anmeldung konsistent sind.
Der aufrufende Prozess muss über die berechtigungen SE_RESTORE_NAME und SE_BACKUP_NAME verfügen. Weitere Informationen finden Sie unter Ausführen mit speziellen Berechtigungen.
Ab Windows XP Service Pack 2 (SP2) und Windows Server 2003 muss der Aufrufer ein Administrator oder das LocalSystem-Konto sein. Es reicht nicht aus, wenn der Aufrufer lediglich die Identität des Administrator- oder LocalSystem-Kontos angibt.
Hinweis
Der Userenv.h-Header definiert LoadUserProfile als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | userenv.h |
Bibliothek | Userenv.lib |
DLL | Userenv.dll |