Функция 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 |
См. также раздел
Низкоуровневые контроль доступа