Безопасность раздела реестра и права доступа

Модель безопасности Windows позволяет управлять доступом к разделам реестра. Дополнительные сведения о безопасности см. в разделе Модель управления доступом.

Дескриптор безопасности для раздела реестра можно указать при вызове функции RegCreateKeyEx или RegSetKeySecurity. Если указать значение NULL, ключ получает дескриптор безопасности по умолчанию. Списки управления доступом в дескрипторе безопасности по умолчанию для ключа наследуются от его прямого родительского ключа.

Чтобы получить дескриптор безопасности раздела реестра, вызовите функцию RegGetKeySecurity, GetNamedSecurityInfo или GetSecurityInfo .

Допустимые права доступа для разделов реестра включают стандартные права доступа DELETE, READ_CONTROL, WRITE_DAC и WRITE_OWNER. Разделы реестра не поддерживают стандартное право доступа SYNCHRONIZE.

В следующей таблице перечислены конкретные права доступа для объектов разделов реестра.

Значение Значение
KEY_ALL_ACCESS (0xF003F)
Объединяет права доступа STANDARD_RIGHTS_REQUIRED, KEY_QUERY_VALUE, KEY_SET_VALUE, KEY_CREATE_SUB_KEY, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY и KEY_CREATE_LINK.
KEY_CREATE_LINK (0x0020)
Зарезервировано для системного использования.
KEY_CREATE_SUB_KEY (0x0004)
Требуется для создания подраздела раздела реестра.
KEY_ENUMERATE_SUB_KEYS (0x0008)
Требуется для перечисления подразделов раздела реестра.
KEY_EXECUTE (0x20019)
Эквивалентно KEY_READ.
KEY_NOTIFY (0x0010)
Требуется для запроса уведомлений об изменениях для раздела реестра или подразделов раздела реестра.
KEY_QUERY_VALUE (0x0001)
Требуется для запроса значений раздела реестра.
KEY_READ (0x20019)
Объединяет значения STANDARD_RIGHTS_READ, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS и KEY_NOTIFY.
KEY_SET_VALUE (0x0002)
Требуется для создания, удаления или задания значения реестра.
KEY_WOW64_32KEY (0x0200)
Указывает, что приложение в 64-разрядной версии Windows должно работать в 32-разрядном представлении реестра. Этот флаг игнорируется 32-разрядной версией Windows. Дополнительные сведения см. в разделе Доступ к альтернативному представлению реестра.
Этот флаг необходимо объединить с помощью оператора OR с другими флагами в этой таблице, которые запрашивают или получают доступ к значениям реестра.
Windows 2000: Этот флаг не поддерживается.
KEY_WOW64_64KEY (0x0100)
Указывает, что приложение в 64-разрядной версии Windows должно работать в 64-разрядном представлении реестра. Этот флаг игнорируется 32-разрядной версией Windows. Дополнительные сведения см. в разделе Доступ к альтернативному представлению реестра.
Этот флаг необходимо объединить с помощью оператора OR с другими флагами в этой таблице, которые запрашивают или получают доступ к значениям реестра.
Windows 2000: Этот флаг не поддерживается.
KEY_WRITE (0x20006)
Объединяет права доступа STANDARD_RIGHTS_WRITE, KEY_SET_VALUE и KEY_CREATE_SUB_KEY.

При вызове функции RegOpenKeyEx система проверяет запрошенные права доступа по дескриптолю безопасности ключа. Если у пользователя нет правильного доступа к разделу реестра, операция открытия завершится ошибкой. Если администратору требуется доступ к разделу, решение заключается в том, чтобы включить привилегию SE_TAKE_OWNERSHIP_NAME и открыть раздел реестра с WRITE_OWNER доступом. Дополнительные сведения см. в разделе Включение и отключение привилегий.

Вы можете запросить ACCESS_SYSTEM_SECURITY право доступа к разделу реестра, если хотите прочитать или записать системный список управления доступом ключа (SACL). Дополнительные сведения см. в разделах Списки управления доступом (ACL) и Права доступа saCL.

Чтобы просмотреть текущие права доступа к разделу, включая предопределенные ключи, используйте редактор реестра (Regedt32.exe). Перейдя к нужной клавише, перейдите в меню Правка и выберите Разрешения.