Функция 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 |