Ручная правка реестра является одним из самых распространённых способов получить доступ к скрытым настройкам Windows, причём прибегают к нему не только администраторы, но также и простые пользователи. Однако вот так просто взять и отредактировать можно далеко не все ключи. В реестре есть немало ключей, редактирование которых невозможно вследствие отсутствия прав записи для локальных администраторов, либо их владельцами являются объекты TrustedInstaller или Система.
Внести изменения в такие ключи можно только заменив их владельца. Наиболее удобным с точки зрения автора способом получения доступа к ключам реестра является использование утилиты RegOwnershipEx, сводящей всю процедуру к паре кликов мышью. На втором месте стоит использование самого редактора реестра, наконец, в качестве альтернативы можно воспользоваться командной строкой, а точнее консольными утилитами, позволяющими заменять владельца и изменять права доступа для ключей реестра, не открывая сам реестр.
В Windows для этого имеется специальная команда REGINI, однако её использование связано с массой неудобств, поэтому будет лучше, если вы прибегнете к сторонним утилитам, например, SubInACL или SetACL. Утилита SubInACL, разработчиком которой является Microsoft, предназначается для просмотра и изменения прав, владельца и прочих метаданных для файлов, каталогов, ключей реестра, сервисов в Windows. Создавалась она для Windows 2000, XP и Server 2003, но с таким же успехом её можно применять во всех версиях системы, включая Windows 10.
Как работать с SubInACL
Синтаксис утилита имеет следующий:
SubInACL /type name /action
Параметр /type определяет тип обрабатываемого объекта. Если это папка или файл, используется параметр file, если же мы имеем дело с ключом реестра, применяем keyreg или subkeyreg. Разница между этими двумя параметрами заключается в том, что первый заменяет владельца конкретного раздела реестра, а второй — владельца раздела и всех вложенных в него подразделов, то есть в данном случае имеет место наследование.
Параметр name это имя объекта: папки, файла или ключа реестра.
Параметр /action определяет, какое действие будет применено к объекту. Для замены владельца и смены прав используется /setowner=username/grant=username=f, где username — имя нового владельца (пользователя).
А теперь, как это всё выглядит на практике.
Заменим для примера владельца ключа HKEY_LOCAL_MACHINE\SYSTEM\ActivationBroker.
По умолчанию владельцем является Система, мы же передадим права пользователю с именем компик.
Открываем от имени администратора командную строку и переходим в каталог установки утилиты. По умолчанию это C:\Program Files\Windows Resource Kits\Tools.
Теперь выполняем такую команду:
subinacl.exe /keyreg "HKEY_LOCAL_MACHINE\SYSTEM\ActivationBroker" /setowner=компик /grant=компик=f
Готово! Владелец ключа заменён.
Как работать с SetACL
Похожим образом работает утилита SetACL. В отличие от SubInACL она не требует установки и имеет несколько иной синтаксис. Распространяется она в двух редакциях — отдельно для 32-битных и отдельно для 64-битных систем.
После скачивания и распаковки архива с исполняемыми файлами утилиты, рекомендуем сразу забросить файл setacl.exe в каталог System32, дабы иметь возможность запускать утилиту без перехода в каталог с исполняемым файлом.
SetACL имеет следующий синтаксис:
SetACL -on name -ot type -actn action
Параметр -on name указывает полный путь к объекту, при этом имя объекта подставляется на место name.
Параметр -ot type определяет тип объекта. Если это файл, используется ключевое слово file, если ключ реестра — слово reg. И в том, и в другом случае оно подставляется на место type.
Параметр -actn action определяет выполняемое действие. В случае замены владельца и установкой прав доступа используются значения setowner или ace.
А вот и конкретный пример.
В прошлый раз мы сделали владельцем каталога ActivationBroker пользователя компик, теперь вернем его законному хозяину, то есть системе. Открываем от имени администратора командную строку и одну за другой выполняем эти две команды:
setacl.exe -on "HKEY_LOCAL_MACHINE\SYSTEM\ActivationBroker" -ot reg -actn setowner -ownr "n:система"
setacl.exe -on "HKEY_LOCAL_MACHINE\SYSTEM\ActivationBroker" -ot reg -actn ace -ace "n:система;p:full"
Всё готово.
Первая команда вернула права на ключ системе, а вторая предоставила ей полный к нему доступ.
SubInACL: www.microsoft.com/en-us/download/details.aspx?id=23510
SetACL: helgeklein.com/download/#setacl
Автору наверно стоило добавить что:некоторые ресурсы (ключи реестра, файлы, директории) ЯВЛЯЮТЬСЯ КРИТИЧЕСКИМИ ДЛЯ ОПЕАЦИОНОЙ СИСТЕМЫ и смена владельца а так же установка некоректных прав безопасности (acl) для этих объектов могут перевести к краху операционной системы или нарушению функциональности (imho: imho:)