Compartir a través de


Función LoadUserProfileA (userenv.h)

Carga el perfil del usuario especificado. El perfil puede ser un perfil de usuario local o un perfil de usuario móvil.

Sintaxis

USERENVAPI BOOL LoadUserProfileA(
  [in]      HANDLE         hToken,
  [in, out] LPPROFILEINFOA lpProfileInfo
);

Parámetros

[in] hToken

Tipo: HANDLE

Token para el usuario, que devuelve la función LogonUser, CreateRestrictedToken, DuplicateToken, OpenProcessToken o OpenThreadToken . El token debe tener acceso TOKEN_QUERY, TOKEN_IMPERSONATE y TOKEN_DUPLICATE . Para obtener más información, vea Derechos de acceso para objetos Access-Token.

[in, out] lpProfileInfo

Tipo: LPPROFILEINFO

Puntero a una estructura PROFILEINFO . LoadUserProfile produce un error y devuelve ERROR_INVALID_PARAMETER si el miembro dwSize de la estructura no está establecido sizeof(PROFILEINFO) en o si el miembro lpUserName es NULL. Para obtener más información, vea la sección Comentarios.

Valor devuelto

Tipo: BOOL

TRUE si se realiza correctamente; de lo contrario, FALSE. Para obtener información de error extendida, llame a GetLastError.

La función produce un error y devuelve ERROR_INVALID_PARAMETER si el miembro dwSize de la estructura en lpProfileInfo no está establecido sizeof(PROFILEINFO) en o si el miembro lpUserName es NULL.

Comentarios

Cuando un usuario inicia sesión de forma interactiva, el sistema carga automáticamente el perfil del usuario. Si un servicio o una aplicación suplanta a un usuario, el sistema no carga el perfil del usuario. Por lo tanto, el servicio o la aplicación deben cargar el perfil del usuario con LoadUserProfile.

Los servicios y las aplicaciones que llaman a LoadUserProfile deben comprobar si el usuario tiene un perfil móvil. Si el usuario tiene un perfil móvil, especifique su ruta de acceso como miembro lpProfilePath de PROFILEINFO. Para recuperar la ruta de acceso de perfil móvil del usuario, puede llamar a la función NetUserGetInfo , especificando el nivel de información 3 o 4.

Tras la devolución correcta, el miembro hProfile de PROFILEINFO es un identificador de clave del Registro abierto a la raíz del subárbol del usuario. Se ha abierto con acceso completo (KEY_ALL_ACCESS). Si un servicio que suplanta a un usuario debe leer o escribir en el archivo del registro del usuario, use este identificador en lugar de HKEY_CURRENT_USER. No cierre el identificador hProfile . En su lugar, páselo a la función UnloadUserProfile . Esta función cierra el identificador. Debe asegurarse de que todos los identificadores de las claves del subárbol del registro del usuario estén cerrados. Si no cierra todos los identificadores de registro abiertos, el perfil del usuario no se puede descargar. Para obtener más información, consulte Derechos de acceso y seguridad de clave del Registro ysubárboles del Registro.

Tenga en cuenta que es su responsabilidad cargar el subárbol del registro del usuario en la clave del Registro HKEY_USERS con la función LoadUserProfile antes de llamar a CreateProcessAsUser. Esto se debe a que CreateProcessAsUser no carga el perfil del usuario especificado en HKEY_USERS. Esto significa que el acceso a la información de la clave del Registro de HKEY_CURRENT_USER puede no producir resultados coherentes con un inicio de sesión interactivo normal.

El proceso de llamada debe tener los privilegios SE_RESTORE_NAME y SE_BACKUP_NAME . Para más información, consulte Ejecución con privilegios especiales.

A partir de Windows XP Service Pack 2 (SP2) y Windows Server 2003, el autor de la llamada debe ser administrador o la cuenta localSystem. El autor de la llamada no basta con suplantar al administrador o a la cuenta localSystem.

Nota

El encabezado userenv.h define LoadUserProfile como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado userenv.h
Library Userenv.lib
Archivo DLL Userenv.dll

Consulte también

PROFILEINFO

UnloadUserProfile

Introducción a los perfiles de usuario

Referencia de perfiles de usuario