15 сент. 2010 г.

RegGetKeySecurity


Функция RegGetKeySecurity возвращает копию дескриптора безопасности, защищающий указанный открытый ключ реестра.
LONG RegGetKeySecurity(
    HKEY hKey, // открытый ключ реестра 
    SECURITY_INFORMATION SecurityInformation, // содержание дескриптора 
    PSECURITY_DESCRIPTOR pSecurityDescriptor, // адрес дескриптора ключа 
    LPDWORD lpcbSecurityDescriptor  // адрес размера буфера для  дескриптора
);
Параметры:
hKeyОпределяет открытый ключ, для которого будет возвращен дескриптор безопасности.
SecurityInformationОпределяет структуру SECURITY_INFORMATION, которая указывает требуемую информацию о безопасности.
pSecurityDescriptorАдрес буфера, в который возвращается копия запрашиваемого дескриптора безопасности.
lpcbSecurityDescriptorАдрес переменной, в которой указан размер в байтах буфера, на который указывает параметр pSecurityDescriptor. Когда функция возвращается, переменная содержит количество записанных в буфер байт.

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

При ошибке, возвращаемое значение – это код ошибки, объявленный в WINERROR.H. Вы можете использовать функцию FormatMessage с флагом FORMAT_MESSAGE_FROM_SYSTEM для получения общего описания ошибки.
Замечания:
Если буфер, определенный в параметре pSecurityDescriptor, слишком мал, функция возвращает ERROR_INSUFFICIENT_BUFFER и параметр lpcbSecurityDescriptor содежит количество байт, требуемых для получения дескриптора безопасности.

Для чтения дескриптора безопасности указанного ключа, вызывающий процесс должен иметь разрешение доступа READ_CONTROL, когда ключ открыт, или должен быть владельцем ключа. (доступ READ_CONTROL разрешает права доступа KEY_READ, KEY_WRITE, KEY_EXECUTE, и KEY_ALL_ACCESS.) К дополнению, вызывающий должен иметь привилегию SE_SECURITY_NAME для чтения системного списка управления доступом (SACL).