Partager via


LoadUserProfileW, fonction (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 de l’utilisateur, retourné par leLogonUser , CreateRestrictedToken, DuplicateToken, OpenProcessTokenou Fonction OpenThreadToken. Le jeton doit avoir TOKEN_QUERY, TOKEN_IMPERSONATEet un accès TOKEN_DUPLICATE. Pour plus d’informations, consultez Droits d’accès pour Access-Token Objets.

[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 est NULL. Pour plus d’informations, consultez Remarques.

Valeur de retour

Type : BOOL

TRUE en cas de réussite ; sinon, FALSE. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

La fonction échoue et retourne ERROR_INVALID_PARAMETER si le membre dwSize de la structure à lpProfileInfo n’est pas défini sur sizeof(PROFILEINFO) ou si le membre lpUserName est 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 vérifier si l’utilisateur a un profil itinérant. Si l’utilisateur a un profil itinérant, spécifiez son chemin d’accès en tant que membre lpProfilePath 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 de 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 à se décharger. Pour plus d’informations, consultez Droits d’accès et de sécurité des clés de Registre et Registre Hives.

Notez qu’il vous incombe de charger la ruche de 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 de 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 administrateur ou compte LocalSystem. Il n’est pas suffisant que l’appelant emprunte simplement l’identité de l’administrateur ou du compte LocalSystem.

Note

L’en-tête userenv.h définit LoadUserProfile en tant qu’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.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête userenv.h
bibliothèque Userenv.lib
DLL Userenv.dll

Voir aussi

PROFILEINFO

UnloadUserProfile

Vue d’ensemble des profils utilisateur

informations de référence sur les profils utilisateur