Поделиться через


Функция LoadUserProfileA (userenv.h)

Загружает профиль указанного пользователя. Профиль может быть профиля локального пользователя или перемещаемого профиля пользователя.

Синтаксис

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

Параметры

[in] hToken

Тип: HANDLE

Маркер для пользователя, который возвращается LogonUser, CreateRestrictedToken, ДубликатToken, OpenProcessTokenили функции OpenThreadToken. Маркер должен иметь доступ TOKEN_QUERY, TOKEN_IMPERSONATEи TOKEN_DUPLICATE. Дополнительные сведения см. в разделе Access Rights for Access-Token Objects.

[in, out] lpProfileInfo

Тип: LPPROFILEINFO

Указатель на структуру PROFILEINFO. LoadUserProfile завершается ошибкой и возвращает ERROR_INVALID_PARAMETER, если dwSize член структуры не задан sizeof(PROFILEINFO) или если элемент lpUserNameNULL. Дополнительные сведения см. в разделе "Примечания".

Возвращаемое значение

Тип: BOOL

TRUE в случае успешного выполнения; в противном случае FALSE. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Функция завершается ошибкой и возвращает ERROR_INVALID_PARAMETER, если элемент dwSize структуры lpProfileInfo не имеет значения sizeof(PROFILEINFO) или если элемент lpUserNameNULL.

Замечания

Когда пользователь входит в систему в интерактивном режиме, система автоматически загружает профиль пользователя. Если служба или приложение олицетворяет пользователя, система не загружает профиль пользователя. Поэтому служба или приложение должны загружать профиль пользователя с LoadUserProfile.

Службы и приложения, вызывающие LoadUserProfile, должны проверить, имеет ли пользователь перемещаемый профиль. Если у пользователя есть перемещаемый профиль, укажите путь как lpProfilePath члена PROFILEINFO. Чтобы получить путь перемещаемого профиля пользователя, можно вызвать функцию NetUserGetInfo, указав уровень информации 3 или 4.

После успешного возврата hProfile член PROFILEINFO — это маркер реестра, открытый для корневого элемента hive пользователя. Он был открыт с полным доступом (KEY_ALL_ACCESS). Если служба, которая олицетворяет пользователя, необходимо прочитать или записать в файл реестра пользователя, используйте этот дескриптор вместо HKEY_CURRENT_USER. Не закрывайте дескриптор hProfile. Вместо этого передайте его в функцию UnloadUserProfile. Эта функция закрывает дескриптор. Убедитесь, что все дескрипторы ключей в кусте реестра пользователя закрыты. Если вы не закрываете все открытые дескрипторы реестра, профиль пользователя не выгрузится. Дополнительные сведения см. в разделов реестра и Hives реестра.

Обратите внимание, что перед вызовом CreateProcessAsUserнеобходимо загрузить куст реестра пользователя в раздел реестра HKEY_USERS с помощью функции LoadUserProfile. Это связано с тем, что CreateProcessAsUser не загружает профиль указанного пользователя в HKEY_USERS. Это означает, что доступ к информации в разделе реестра HKEY_CURRENT_USER может не привести к результатам, согласованным с обычным интерактивным входом.

Вызов должен иметь права SE_RESTORE_NAME и SE_BACKUP_NAME. Дополнительные сведения см. в разделе Выполнение с специальными привилегиями.

Начиная с Windows XP с пакетом обновления 2 (SP2) и Windows Server 2003, вызывающий объект должен быть администратором или учетной записью LocalSystem. Для вызывающего абонента недостаточно просто олицетворения учетной записи администратора или LocalSystem.

Заметка

Заголовок userenv.h определяет LoadUserProfile как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка userenv.h
библиотеки Userenv.lib
DLL Userenv.dll

См. также

PROFILEINFO

ВыгрузкаUserProfile

Обзор профилей пользователей

Справочник по профилям пользователей