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


Функция RegOpenUserClassesRoot (winreg.h)

Извлекает дескриптор ключа HKEY_CLASSES_ROOT для указанного пользователя. Пользователь идентифицируется маркером доступа. Возвращенный раздел содержит представление реестра, которое объединяет содержимое раздела HKEY_LOCAL_MACHINE\Software\Classes с содержимым разделов Software\Classes в кусте реестра пользователя. Дополнительные сведения см. в разделе ключ HKEY_CLASSES_ROOT.

Синтаксис

LSTATUS RegOpenUserClassesRoot(
  [in]  HANDLE hToken,
        DWORD  dwOptions,
  [in]  REGSAM samDesired,
  [out] PHKEY  phkResult
);

Параметры

[in] hToken

Дескриптор основного маркера доступа или маркера доступа олицетворения, который идентифицирует интересующего пользователя. Это может быть дескриптор маркера, возвращаемый вызовом функций LogonUser, CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken или OpenThreadToken .

Дескриптор должен иметь TOKEN_QUERY доступ. Дополнительные сведения см. в разделе Права доступа для объектов Access-Token.

dwOptions

Этот параметр зарезервирован и должен иметь нулевое значение.

[in] samDesired

Маска, указывающая требуемые права доступа к ключу. Функция завершается ошибкой, если дескриптор безопасности ключа не разрешает запрошенный доступ для вызывающего процесса. Дополнительные сведения см. в разделе Безопасность раздела реестра и права доступа.

[out] phkResult

Указатель на переменную, получающую дескриптор открытого ключа. Если возвращенный дескриптор больше не нужен, вызовите функцию RegCloseKey , чтобы закрыть ее.

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

Если функция выполнена успешно, возвращаемое значение будет ERROR_SUCCESS.

Если функция завершается сбоем, возвращаемое значение представляет собой код ошибки, отличный от нуля, определенный в Winerror.h. Чтобы получить общее описание ошибки, можно использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM.

Комментарии

Функция RegOpenUserClassesRoot позволяет получать объединенные HKEY_CLASSES_ROOT сведения для пользователей, отличных от интерактивного пользователя. Например, серверный компонент клиента или серверного приложения может использовать RegOpenUserClassesRoot для получения объединенных сведений для клиента.

RegOpenUserClassesRoot завершается ошибкой , если профиль пользователя для указанного пользователя не загружен. Когда пользователь входит в систему в интерактивном режиме, система автоматически загружает профиль пользователя. Для других пользователей можно вызвать функцию LoadUserProfile , чтобы загрузить профиль пользователя. Однако LoadUserProfile может занимать очень много времени, поэтому не вызывайте его для этой цели, если нет абсолютной необходимости в объединенном HKEY_CLASSES_ROOT информации пользователя.

Приложениям, работающим в контексте безопасности интерактивного пользователя, вошедшего в систему, не нужно использовать RegOpenUserClassesRoot. Эти приложения могут вызывать функцию RegOpenKeyEx , чтобы получить объединенное представление ключа HKEY_CLASSES_ROOT для интерактивного пользователя.

Требования

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

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

LoadUserProfile

RegCloseKey

RegOpenKeyEx

Функции реестра

Обзор реестра