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


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

Функция RegGetKeySecurity извлекает копию дескриптора безопасности , защищающего указанный открытый раздел реестра.

Синтаксис

LSTATUS RegGetKeySecurity(
  [in]            HKEY                 hKey,
  [in]            SECURITY_INFORMATION SecurityInformation,
  [out, optional] PSECURITY_DESCRIPTOR pSecurityDescriptor,
  [in, out]       LPDWORD              lpcbSecurityDescriptor
);

Параметры

[in] hKey

Дескриптор открытого ключа, для которого извлекается дескриптор безопасности.

[in] SecurityInformation

Значение SECURITY_INFORMATION , указывающее запрошенные сведения о безопасности.

[out, optional] pSecurityDescriptor

Указатель на буфер, получающий копию запрошенного дескриптора безопасности.

[in, out] lpcbSecurityDescriptor

Указатель на переменную, указывающую размер (в байтах) буфера, на который указывает параметр pSecurityDescriptor . При возврате функции переменная содержит количество байтов, записанных в буфер.

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

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

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

Комментарии

Если буфер, заданный параметром pSecurityDescriptor , слишком мал, функция возвращает ERROR_INSUFFICIENT_BUFFER, а параметр lpcbSecurityDescriptor содержит количество байтов, необходимое для запрошенного дескриптора безопасности.

Чтобы прочитать владельца, группу или список управления доступом (DACL) из дескриптора безопасности ключа, вызывающему процессу должен быть предоставлен доступ READ_CONTROL при открытии дескриптора. Чтобы получить доступ READ_CONTROL, вызывающий объект должен быть владельцем ключа или daCL ключа должен предоставить доступ.

Чтобы прочитать системный список управления доступом (SACL) из дескриптора безопасности, вызывающему процессу должен быть предоставлен доступ ACCESS_SYSTEM_SECURITY при открытии ключа. Правильный способ получить этот доступ — включить привилегию SE_SECURITY_NAME в текущем маркере вызывающего объекта, открыть дескриптор для ACCESS_SYSTEM_SECURITY доступа, а затем отключить привилегию.

Требования

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

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

FormatMessage

Низкоуровневые контроль доступа

Низкоуровневые функции контроль доступа

RegDeleteKey

RegOpenKeyEx

RegSetKeySecurity

SECURITY_INFORMATION