Função LoadUserProfileA (userenv.h)
Carrega o perfil do usuário especificado. O perfil pode ser um perfil de usuário local ou um perfil de usuário móvel.
Sintaxe
USERENVAPI BOOL LoadUserProfileA(
[in] HANDLE hToken,
[in, out] LPPROFILEINFOA lpProfileInfo
);
Parâmetros
[in] hToken
Tipo: HANDLE
Token para o usuário, que é retornado pela função LogonUser, CreateRestrictedToken, DuplicateToken, OpenProcessToken ou OpenThreadToken . O token deve ter acesso TOKEN_QUERY, TOKEN_IMPERSONATE e TOKEN_DUPLICATE . Para obter mais informações, consulte Direitos de acesso para objetos Access-Token.
[in, out] lpProfileInfo
Tipo: LPPROFILEINFO
Ponteiro para uma estrutura PROFILEINFO . LoadUserProfile falhará e retornará ERROR_INVALID_PARAMETER se o membro dwSize da estrutura não estiver definido sizeof(PROFILEINFO)
como ou se o membro lpUserName for NULL. Para obter mais informações, consulte Comentários.
Valor retornado
Tipo: BOOL
TRUE se tiver êxito; caso contrário, FALSE. Para obter informações de erro estendidas, chame GetLastError.
A função falhará e retornará ERROR_INVALID_PARAMETER se o membro dwSize da estrutura em lpProfileInfo não estiver definido sizeof(PROFILEINFO)
como ou se o membro lpUserName for NULL.
Comentários
Quando um usuário faz logon interativamente, o sistema carrega automaticamente o perfil do usuário. Se um serviço ou um aplicativo representar um usuário, o sistema não carregará o perfil do usuário. Portanto, o serviço ou aplicativo deve carregar o perfil do usuário com LoadUserProfile.
Serviços e aplicativos que chamam LoadUserProfile devem marcar para ver se o usuário tem um perfil móvel. Se o usuário tiver um perfil móvel, especifique seu caminho como o membro lpProfilePath de PROFILEINFO. Para recuperar o caminho do perfil móvel do usuário, você pode chamar a função NetUserGetInfo , especificando o nível de informações 3 ou 4.
Após o retorno bem-sucedido, o membro hProfile de PROFILEINFO é um identificador de chave do Registro aberto na raiz do hive do usuário. Ele foi aberto com acesso completo (KEY_ALL_ACCESS). Se um serviço que representa um usuário precisar ler ou gravar no arquivo de registro do usuário, use esse identificador em vez de HKEY_CURRENT_USER. Não feche o identificador hProfile . Em vez disso, passe-o para a função UnloadUserProfile . Essa função fecha o identificador. Você deve garantir que todos os identificadores de chaves no hive do registro do usuário sejam fechados. Se você não fechar todos os identificadores do Registro abertos, o perfil do usuário não será descarregado. Para obter mais informações, consulte Segurança de chave do Registro e Direitos de Acesso e Hives do Registro.
Observe que é sua responsabilidade carregar o hive do registro do usuário na chave do Registro HKEY_USERS com a função LoadUserProfile antes de chamar CreateProcessAsUser. Isso ocorre porque CreateProcessAsUser não carrega o perfil do usuário especificado em HKEY_USERS. Isso significa que o acesso a informações no HKEY_CURRENT_USER chave do Registro pode não produzir resultados consistentes com um logon interativo normal.
O processo de chamada deve ter os privilégios SE_RESTORE_NAME e SE_BACKUP_NAME . Para obter mais informações, confira Executar com privilégios especiais.
A partir do Windows XP Service Pack 2 (SP2) e do Windows Server 2003, o chamador deve ser um administrador ou a conta LocalSystem. Não é suficiente para o chamador apenas representar o administrador ou a conta localSystem.
Observação
O cabeçalho userenv.h define LoadUserProfile como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | userenv.h |
Biblioteca | Userenv.lib |
DLL | Userenv.dll |