Funzione LoadUserProfileA (userenv.h)
Carica il profilo dell'utente specificato. Il profilo può essere un profilo utente locale o un profilo utente mobile.
Sintassi
USERENVAPI BOOL LoadUserProfileA(
[in] HANDLE hToken,
[in, out] LPPROFILEINFOA lpProfileInfo
);
Parametri
[in] hToken
Tipo: HANDLE
Token per l'utente, restituito dalla funzione LogonUser, CreateRestrictedToken, DuplicateToken, OpenProcessToken o OpenThreadToken . Il token deve avere accesso TOKEN_QUERY, TOKEN_IMPERSONATE e TOKEN_DUPLICATE . Per altre informazioni, vedere Diritti di accesso per gli oggetti Access-Token.
[in, out] lpProfileInfo
Tipo: LPPROFILEINFO
Puntatore a una struttura PROFILEINFO . LoadUserProfile ha esito negativo e restituisce ERROR_INVALID_PARAMETER se il membro dwSize della struttura non è impostato su sizeof(PROFILEINFO)
o se il membro lpUserName è NULL. Per altre informazioni, vedere la sezione Osservazioni.
Valore restituito
Tipo: BOOL
TRUE se ha esito positivo; in caso contrario, FALSE. Per informazioni dettagliate sull'errore, chiamare GetLastError.
La funzione ha esito negativo e restituisce ERROR_INVALID_PARAMETER se il membro dwSize della struttura in lpProfileInfo non è impostato su sizeof(PROFILEINFO)
o se il membro lpUserName è NULL.
Commenti
Quando un utente accede in modo interattivo, il sistema carica automaticamente il profilo dell'utente. Se un servizio o un'applicazione rappresenta un utente, il sistema non carica il profilo dell'utente. Pertanto, il servizio o l'applicazione deve caricare il profilo dell'utente con LoadUserProfile.
I servizi e le applicazioni che chiamano LoadUserProfile devono verificare se l'utente ha un profilo mobile. Se l'utente ha un profilo mobile, specificarne il percorso come membro lpProfilePath di PROFILEINFO. Per recuperare il percorso del profilo mobile dell'utente, è possibile chiamare la funzione NetUserGetInfo , specificando il livello di informazioni 3 o 4.
Al termine della restituzione, il membro hProfile di PROFILEINFO è un handle di chiave del Registro di sistema aperto alla radice dell'hive dell'utente. È stato aperto con accesso completo (KEY_ALL_ACCESS). Se un servizio che rappresenta un utente deve leggere o scrivere nel file del Registro di sistema dell'utente, usare questo handle anziché HKEY_CURRENT_USER. Non chiudere l'handle hProfile . Passarlo invece alla funzione UnloadUserProfile . Questa funzione chiude l'handle. È necessario assicurarsi che tutti gli handle alle chiavi nell'hive del Registro di sistema dell'utente siano chiusi. Se non si chiude tutti gli handle del Registro di sistema aperti, il profilo dell'utente non viene scaricato. Per altre informazioni, vedere Sicurezza delle chiavi del Registro di sistema e Diritti di accesso e Hives del Registro di sistema.
Si noti che è responsabilità dell'utente caricare l'hive del Registro di sistema dell'utente nella chiave del Registro di sistema HKEY_USERS con la funzione LoadUserProfile prima di chiamare CreateProcessAsUser. Ciò è dovuto al fatto che CreateProcessAsUser non carica il profilo dell'utente specificato in HKEY_USERS. Ciò significa che l'accesso alle informazioni nella chiave del Registro di sistema HKEY_CURRENT_USER potrebbe non produrre risultati coerenti con un normale accesso interattivo.
Il processo chiamante deve disporre dei privilegi di SE_RESTORE_NAME e SE_BACKUP_NAME . Per altre informazioni, vedere Esecuzione con privilegi speciali.
A partire da Windows XP Service Pack 2 (SP2) e Windows Server 2003, il chiamante deve essere un amministratore o l'account LocalSystem. Non è sufficiente per il chiamante semplicemente rappresentare l'account amministratore o LocalSystem.
Nota
L'intestazione userenv.h definisce LoadUserProfile come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
Requisiti
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | userenv.h |
Libreria | Userenv.lib |
DLL | Userenv.dll |