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


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

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

Синтаксис

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

Параметры

[in] hToken

Тип: HANDLE

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

[in, out] lpProfileInfo

Тип: LPPROFILEINFO

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

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

Тип: BOOL

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

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

Комментарии

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

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

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

Обратите внимание, что перед вызовом 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 или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header userenv.h
Библиотека Userenv.lib
DLL Userenv.dll

См. также раздел

PROFILEINFO

UnloadUserProfile

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

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