Получите право собственности на ключ реестра и назначьте права доступа с помощью командной строки
Мы видели, как использовать редактор реестра (regedit.exe) для смены владельца раздела реестра и подразделов. И мы также рассмотрели, как сбросить разрешения ключа реестра или удалить упрямые ключи с помощью RegASSASSIN. В этой статье рассказывается, как изменить владельца ключа реестра и предоставить разрешения с помощью командной строки.
В Windows есть консольные утилиты takeown.exe и icacls.exe для изменения владельца файла и папки и разрешений, но таких встроенных инструментов для изменения владельца ключа реестра с помощью командной строки нет. Вам понадобится сторонний инструмент с именем SetACL для этой задачи.
SetACL: аргументы командной строки
Прежде чем продолжить, давайте посмотрим синтаксис командной строки для изменения владельца файла / реестра и разрешений с помощью SetACL.
SetACL -on имя-объекта -ot objecttype -actn action
-on
: укажите путь к объекту, с которым должен работать SetACL (например, файл, раздел реестра, сетевой ресурс, служба или принтер).-ot
: указать тип объекта. Чтобы изменить владельца или разрешения для файла или папки, используйтеfile
типа объекта. Для ключей реестра используйте тип объектаreg
-actn
:-actn
действие относительно того, что SetACL должен делать с указанным объектом. Для вступления во владение установите действие какsetowner
. Чтобы изменить разрешения, установите действие какace
.
(См. Документацию SetACL для полного списка объектов, типов и поддерживаемых действий.)
Получите право собственности на ключ реестра и назначьте права доступа с помощью командной строки
Чтобы изменить владельца реестра и разрешения с помощью SetACL:
- Скачайте SetACL, разархивируйте содержимое в папку.
- Скопируйте соответствующую версию
setacl.exe
(32-разрядная или 64-разрядная) инструмента в папку - например,d:\tools
. - Допустим, вы хотите изменить владельца ветки реестра
HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}
и предоставить группеAdministrators
разрешения на полный доступ. Запустите эти две команды из окна командной строки администратора:SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \ {D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n: Администраторы" SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \5-B610 \ {D63 4990-A94F-E40B9D520160} "-ot reg -actn ace -ace" n: администраторы; p: полное "
SetACL: изменить владельца ключа реестра и назначить полные разрешения - 1-я команда устанавливает группу
Administrators
в качестве владельца ключа - Вторая команда назначает группе
Administrators
разрешения на полный доступ для ключа.
- 1-я команда устанавливает группу
Группа « Administrators
» владеет ключом и его подразделами, а также имеет полные права доступа, которые можно проверить с помощью редактора реестра.
-rec Yes
: Чтобы изменить владельца и разрешения для этого ключа и подразделов, добавьте аргумент -rec Yes
в конце. Смотрите рисунок ниже для получения дополнительной информации.Ошибка при изменении разрешений раздела реестра?
SetACL сообщает о следующей ошибке при попытке изменить разрешения для файла / папки или раздела реестра, к которым у вас нет доступа. Чтобы предотвратить эту ошибку, убедитесь, что вы сначала вступили во владение ключом, прежде чем изменять его разрешения.
Сообщение об ошибке SetACL: сбой вызова SetNamedSecurityInfo ()
Сообщение об ошибке операционной системы: доступ запрещен.
Возьмите на себя ответственность и назначьте разрешения рекурсивно (этот ключ и подразделы)
Чтобы изменить владельца и предоставить разрешение на полный доступ (для Administrators
) для указанного ключа вместе с его подразделами, -rec Yes
в конце ключ -rec Yes
, как -rec Yes
ниже:
SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \ {D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n: администраторы" -rec Да SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \ CLSID \ -BB46-4990-A94F-E40B9D520160} "-ot reg -actn ace -ace" n: администраторы; p: полный "-rec Да
Установить TrustedInstaller в качестве владельца
Чтобы установить TrustedInstaller
в качестве владельца указанного выше раздела реестра и рекурсивно назначить ему разрешения на полный доступ, используйте тот же синтаксис командной строки. Вам нужно только изменить имя учетной записи / группы. Вот команды, которые вам нужно выполнить на этот раз:
SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \ {D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n: nt service \rustinstaller" -rec Да SetACL.exe -on "HKEY_CLASSESSRID \ {D63B10C5-BB46-4990-A94F-E40B9D520160} "-ot reg -actn ace -ace" n: "nt service \ trustinstaller"; p: full "-rec Да
После запуска вышеуказанной команды в качестве владельца ключа и подключей устанавливается TrustedInstaller
( NT SERVICE\TrustedInstaller
).
Дополнительная информация
- SubInACL от Microsoft. Существует еще один консольный инструмент под названием SubInACL, выпущенный Microsoft в эпоху Windows XP. Это часть средств Windows XP / 2003 Resource Kit Tools. SubInACL может использоваться, чтобы установить владельца и разрешения для файлов / папок и реестра. Однако, поскольку SubInACL был прекращен Microsoft и по умолчанию используется 32-битные пути к файлам и реестру (в 64-битных системах Windows), что делает его непригодным для использования в 64-битных версиях Windows в некоторых ситуациях.
- Regini.exe от Microsoft: у вас есть еще один встроенный консольный инструмент с именем regini.exe, который позволяет изменять разрешения реестра с помощью текстового файла. Однако regini.exe не может изменить владельца раздела реестра. Для получения дополнительных сведений о regini.exe откройте окно командной строки и введите
regini.exe /?
- SetACL от Helge Klein - широко рекомендуемый инструмент, и он наверняка заполнил пустоту, оставленную SubInACL, а также устраняет недостатки
regini.exe
. SetACL может сделать гораздо больше, чем то, что обсуждается в этой статье.
Дополнительные сведения см. В документации SetACL: Версия командной строки SetACL (SetACL.exe) - Синтаксис и описание.