Fonction LoadUserProfileW (userenv.h)
Charge le profil de l’utilisateur spécifié. Le profil peut être un profil utilisateur local ou un profil utilisateur itinérant.
Syntaxe
USERENVAPI BOOL LoadUserProfileW(
[in] HANDLE hToken,
[in, out] LPPROFILEINFOW lpProfileInfo
);
Paramètres
[in] hToken
Type : HANDLE
Jeton pour l’utilisateur, qui est retourné par la fonction LogonUser, CreateRestrictedToken, DuplicateToken, OpenProcessToken ou OpenThreadToken . Le jeton doit avoir un accès TOKEN_QUERY, TOKEN_IMPERSONATE et TOKEN_DUPLICATE . Pour plus d’informations, consultez Droits d’accès pour les objets Access-Token.
[in, out] lpProfileInfo
Type : LPPROFILEINFO
Pointeur vers une structure PROFILEINFO .
LoadUserProfile échoue et retourne ERROR_INVALID_PARAMETER si le membre dwSize de la structure n’est pas défini sur sizeof(PROFILEINFO)
ou si le membre lpUserName a la valeur NULL. Pour plus d'informations, consultez la section Notes.
Valeur retournée
Type : BOOL
TRUE en cas de réussite ; sinon, FALSE. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
La fonction échoue et retourne ERROR_INVALID_PARAMETER si le membre dwSize de la structure au niveau de lpProfileInfo n’est pas défini sur sizeof(PROFILEINFO)
ou si le membre lpUserName a la valeur NULL.
Remarques
Lorsqu’un utilisateur se connecte de manière interactive, le système charge automatiquement le profil de l’utilisateur. Si un service ou une application emprunte l’identité d’un utilisateur, le système ne charge pas le profil de l’utilisateur. Par conséquent, le service ou l’application doit charger le profil de l’utilisateur avec LoadUserProfile.
Les services et applications qui appellent LoadUserProfile doivent case activée pour voir si l’utilisateur dispose d’un profil itinérant. Si l’utilisateur a un profil itinérant, spécifiez son chemin d’accès en tant que membre lpProfilePath de PROFILEINFO. Pour récupérer le chemin du profil itinérant de l’utilisateur, vous pouvez appeler la fonction NetUserGetInfo , en spécifiant le niveau d’informations 3 ou 4.
Une fois le retour réussi, le membre hProfile de PROFILEINFO est un handle de clé de Registre ouvert à la racine de la ruche de l’utilisateur. Il a été ouvert avec un accès complet (KEY_ALL_ACCESS). Si un service qui emprunte l’identité d’un utilisateur doit lire ou écrire dans le fichier de Registre de l’utilisateur, utilisez ce handle au lieu de HKEY_CURRENT_USER. Ne fermez pas le handle hProfile . Au lieu de cela, passez-le à la fonction UnloadUserProfile . Cette fonction ferme le handle. Vous devez vous assurer que tous les handles des clés dans la ruche du Registre de l’utilisateur sont fermés. Si vous ne fermez pas tous les handles de Registre ouverts, le profil de l’utilisateur ne parvient pas à décharger. Pour plus d’informations, consultez Sécurité de la clé de registre et droits d’accès et Ruches du Registre.
Notez qu’il vous incombe de charger la ruche du Registre de l’utilisateur dans la clé de Registre HKEY_USERS avec la fonction LoadUserProfile avant d’appeler CreateProcessAsUser. Cela est dû au fait que CreateProcessAsUser ne charge pas le profil de l’utilisateur spécifié dans HKEY_USERS. Cela signifie que l’accès aux informations dans la clé de Registre HKEY_CURRENT_USER peut ne pas produire des résultats cohérents avec une ouverture de session interactive normale.
Le processus appelant doit disposer des privilèges SE_RESTORE_NAME et SE_BACKUP_NAME . Pour plus d’informations, consultez Exécution avec des privilèges spéciaux.
À compter de Windows XP Service Pack 2 (SP2) et Windows Server 2003, l’appelant doit être un administrateur ou le compte LocalSystem. Il ne suffit pas que l’appelant emprunte simplement l’identité de l’administrateur ou du compte LocalSystem.
Notes
L’en-tête userenv.h définit LoadUserProfile comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | userenv.h |
Bibliothèque | Userenv.lib |
DLL | Userenv.dll |