Funzione LoadUserProfileW (userenv.h)

Carica il profilo dell'utente specificato. Il profilo può essere un profilo utente locale o un profilo utente roaming.

Sintassi

USERENVAPI BOOL LoadUserProfileW(
  [in]      HANDLE         hToken,
  [in, out] LPPROFILEINFOW lpProfileInfo
);

Parametri

[in] hToken

Tipo: HANDLE

Token per l'utente, restituito dalla funzione LogonUser, CreateRestrictedToken, DuplicateToken, OpenProcessToken o OpenThreadToken. Il token deve avere TOKEN_QUERY, TOKEN_IMPERSONATE e accesso 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 sizeof(PROFILEINFO) su 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 sizeof(PROFILEINFO) su 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 devono caricare il profilo dell'utente con LoadUserProfile.

I servizi e le applicazioni che chiamano LoadUserProfile devono verificare se l'utente ha un profilo roaming. Se l'utente ha un profilo roaming, specificare il percorso come membro lpProfilePath di PROFILEINFO. Per recuperare il percorso del profilo roaming 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 . Passare 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 riesce a scaricare. Per altre informazioni, vedere Sicurezza delle chiavi del Registro di sistema e Diritti di accesso eHives del Registro di sistema.

Si noti che è responsabilità 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. Questo perché 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 di chiamata deve avere i 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'amministratore o l'account 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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
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

Vedi anche

PROFILEINFO

ScaricaUserProfile

Panoramica dei profili utente

Informazioni di riferimento per i profili utente