Compartilhar via


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

Confira também

PROFILEINFO

UnloadUserProfile

Visão geral de perfis de usuário

Referência de perfis de usuário