Як поміняти власника ключа або гілки реєстру з командного рядка

Іноді, щоб поміняти щось в реєстрі (виконати Твік або просто внести потрібне вам зміна) в першу чергу потрібно отримати доступ до гілки / ключу реєстру. Здавалося б, для адміністратора це не проблема. Але нюанс у тому, що в деякі гілки реєстру Windows не може внести зміни навіть адміністратор. Доступ до таких гілках обмежується ACL, в яких або відсутні права записи для групи локальних адміністраторів, або власником таких розділів призначені TrustedInstaller або System. У цьому керівництві ми покажемо кілька простих способів надати адміністратору права власника і повні права на захищений таким чином розділ реєстру.

Не будемо розглядати графічний спосіб зміни власника і призначення права через утиліту regedit.exe, і зупинимося на можливостях зміни власника будь-якого ключа реєстру та надання доступу з командного рядка. Всі описані нижче методи працюють у всіх версіях Windows!

зміст:

  • Отримання прав власника на ключ реєстру з використанням утиліти SubInACL
  • Зміна власника та прав на ключ реєстру за допомогою утиліти SetACL
  • Отримання прав власника на ключ реєстру з використанням вбудованої команди REGINI
  • приклад використання

Отримання прав власника на ключ реєстру з використанням утиліти SubInACL

SubInACL - це офіційна утиліта від Microsoft, яку можна використовувати для перегляду та зміни прав, власника та інформації про безпеку і т.д. для файлів, папок, ключів реєстру, сервісів і т.д. в ОС Windows .

Утиліта була написана для Windows 2000, XP і Server 2003, однак її можна використовувати і з усіма новими версіями Windows.

КРОК 1:

Скачайте утиліту з сайту Microsoft: https://www.microsoft.com/en-us/download/details.aspx?id=23510

КРОК 2:

Це стандартний MSI інсталятор, який копіює SubInACL.exe file в папку "C: \ Program Files (x86) \ Windows Resource Kits \ Tools \» в Windows x64 і в папку «C: \ Program Files \ Windows Resource Kits \ Tools \" в Windows х86.

Але ніхто не заважає вам просто розпакувати MSI файл (наприклад, за допомогою 7-Zip) в будь-яке місце без необхідності його установки.

КРОК 3:

Ви можете вибрати як запускати SubInACL.exe. З місця установки (cd C: \ Program Files (x86) \ Windows Resource Kits \ Tools), або з місця куди ви самі його розпакували, та хоч з флешки 🙂. Або можете скопіювати SubInACL.exe в папку З: \Windows\System32 і тоді він буде запуститься на ім'я. Ми пропонуємо скопіювати subinacl.exe файл в папку C: \ Windows \ System32 (C: \ Windows \ SysWOW64) щоб була можливість запустити SubInACL з будь-якого зручного місця.

КРОК 4:

Давайте навчимося, як працювати з SubInACL.exe. Синтаксис утиліти (в командному рядку з правами адміністратора):

SubInACL / type name / action

/type: Вкажіть потрібний тип об'єкта. Якщо треба змінити власника файлу або папки використовуємо file, а якщо треба поміняти власника ключа реєстру, то використовуємо keyreg або subkeyreg. Різниця між keyreg і subkeyreg в тому, що keyreg змінює власника тільки конкретного ключа, а subkeyreg змінює власника цього ключа і всіх підлеглих ключів.

name: Замініть цей параметр на назву файлу, папки або ключа реєстру.

/action: Цей параметр визначає ту дію, яку буде вироблено над об'єктом. Ну а раз ми зібралися міняти власника ключа і прав на ключ, будемо використовувати /setowner=administrators /grant=administrators=f як дії.

Дивимося на приклад.

SUBINACL / keyreg "HKEY_LOCAL_MACHINE \ SOFTWARE \ Mozilla" / setowner = Адміністратори / grant = Адміністратори = f

Примітка. В англійській версії Windows замість Адміністратори потрібно вказувати Administrators.

Ця команда означає, що змінюється власник даного ключа і Адміністратор отримує повні права керування даним ключем.

Ну а вам залишається тільки замінити назву ключа з прикладу, на ваш власний і запустити команду ...

PS: Якщо цікаво подивитися весь доступний синтаксис, ключі та параметри команди SubInACL, запустіть з таким ключем SubInACL /help

Зміна власника та прав на ключ реєстру за допомогою утиліти SetACL

SetACL є безкоштовною консольної утилітою. Вам потрібно завантажити програму і потім запустити потрібні команди.

КРОК 1:

Качаємо програму SetACL: https://helgeklein.com/download/#setacl

КРОК 2:

Після завантаження розпакуйте ZIP файл і побачите дві версії утиліти: для x86 і для x64 версій Windows. Вам треба використовувати правильний SetACL.EXE для вашої версією Windows. Подивитися яка версія Windows можна в Свойствах Системи (System Properties).

КРОК 3:

Є два способи використання додаток. Ви можете, наприклад, зберегти утиліту в папці E: \ SetACL, потім відкрити Командний рядок від імені Адміністратора і перейти в цю папку використовуючи стандартні команди або ввести повний шлях для запуску утиліти, наприклад E: \ SetACL \ SetACL.exe. Або ви можете скопіювати SetACL.exe в системну папку C: \Windows\System32 (C: \ Windows \ SysWOW64) тоді можна запускати команду SetACL з будь-якого місця. Ми пропонуємо скопіювати EXE файл в папку C: \ Windows \ System32 (C: \ Windows \ SysWOW64).

КРОК 4:

Тепер, коли ви зробили все попередні процедури, ви можете запустити SetACL:

SetACL -on name -ot type -actn action

синтаксис:

Те що виділено жирним залишається незмінним, то що виділено курсивом будемо міняти:

-on: Цей параметр вказує на повний шлях до фалу або ключ реєстру, власника якого треба змінити.

-ot: Цей параметр визначає тип об'єкта. Якщо міняємо власника файлу, то міняємо параметр на file. Якщо ключ реєстру, то вказуємо reg

-actn: Цей параметр вказує, що саме зробити. Можливо багато варіантів, але так як ми говоримо про ключі реєстру, зокрема про зміну власника або призначення інших прав на ключ, будемо використовувати тільки значення setowner або ace.

Щоб краще зрозуміти як це працює, подивимося приклад:

Припустимо, що потрібно змінити власника ключа HKEY_LOCAL_MACHINE \ SOFTWARE \ Mozilla. Для цього нам треба запустити SetACL з наступними параметрами:

SetACL.exe -on "HKEY_LOCAL_MACHINE \ SOFTWARE \ Mozilla" -ot reg -actn setowner -ownr "n: Адміністратори"

SetACL.exe -on "HKEY_LOCAL_MACHINE \ SOFTWARE \ Mozilla" -ot reg -actn ace -ace "n: Адміністратори; p: full"

Перша команда зробить групу локальних адміністраторів власником ключа, а друга надасть повний доступ до ключа.

Вам просто треба поміняти значення ключа між лапками ( ""), на той, який вам потрібен.

Примітка: SetACL має багато параметрів, але про це почитайте самостійно тут (https://helgeklein.com/setacl/documentation/command-line-version-setacl-exe/).

Отримання прав власника на ключ реєстру з використанням вбудованої команди REGINI

Ця команда йде в складі будь-якої Windows і ми можемо її використовувати для призначення дозволів на ключі реєстру. Використання команди дуже просте. Створюємо файл скрипта з необхідними параметрами і передаємо цей файл для обробки команді REGINI.

КРОК 1:

Відкриваємо Блокнот (Notepad) і вписуємо назву необхідного ключа і ACL (Access Control List) використовуючи вот такой вот формат:

Key_name [ACL]

міняємо Key_name на назву потрібного ключа, але дивіться, щоб назва ключа була коректною, як показано нижче:

\ Registry \ machine \ software \ classes (Для ключів розділу HKEY_CLASSES_ROOT)

\ Registry \ machine (Для ключів розділу HKEY_LOCAL_MACHINE)

\ Registry \ user \ user_sid (Для ключів розділу HKEY_CURRENT_USER) (замініть user_sid на правильний Security ID користувача)

\ Registry \ user (Для ключів розділу HKEY_USERS)

Для прикладу, давайте розглянемо ключ "HKEY_LOCAL_MACHINE \ SOFTWARE \ Mozilla» і запишемо скрипт:

\ Registry \ machine \ SOFTWARE \ Mozilla

замінюємо ACL на ті, які нам необхідні list:

1(To provide Administrators Full Access)Дати Адміністраторам повний доступ
2(To provide Administrators Read Access)Дати Адміністраторам доступ тільки на читання
3(To provide Administrators Read and Write Access)Дати Адміністраторам право на зміну
4(To provide Administrators Read, Write and Delete Access)Дати Адміністраторам право на зміну цін і видалення
5(To provide Creator / Owner Full Access)Дати Творцеві / Власнику повний доступ
6(To provide Creator / Owner Read and Write Access)Дати Творцеві / Власнику доступ на зміну
7(To provide Everyone Full Access)Дати Всім повний доступ
8(To provide Everyone Read Access)Дати Всім доступ тільки на читання
9(To provide Everyone Read and Write Access)Дати Всім право на зміну
10(To provide Everyone Read, Write and Delete Access)Дати Всім право на зміну цін і видалення
17(To provide System Full Access)Дати Системі повний доступ
18(To provide System Read and Write Access)Дати Системі право на зміну
19(To provide System Read Access)Дати Системі доступ тільки на читання

зараз [ACL] В скрипті буде встановлений якось так:

[1 6 9 17]

Як показано в таблиці це дасть повний доступ Адміністраторам і Системі, а також право на зміну творцеві ключа і все іншим.

Остаточно рядок буде виглядати так:

\ Registry \ machine \ HKEY_LOCAL_MACHINE \ SOFTWARE \ Mozilla [1 6 9 17]

Ви можете використовувати будь-які комбінації ACL як вам потрібно.

Примітка: Пам'ятайте, що існуючі дозволи для зазначеного в скрипті ключа будуть замінені на нові. Не забувайте включити в скрипт дозволу для всіх акаунтів. Якщо ви забудете дати права аккаунту СИСТЕМА, то цей аккаунт буде видалений зі списку надання доступу.

КРОК 2:

Зберігаємо скрипт під ім'ям ACL.TXT потім відкриваємо командний рядок від імені адміністратора і запускаємо нашу команду:

REGINI full_path_of_script_file

Або, в нашому випадку, це буде виглядати так

REGINI c: \ install \ acl.txt

І все. Дозволи будуть негайно змінені.

Ну ось якось так. Метод 1 найбільш ефективний і працює на всі 100%.

приклад використання

Було необхідно запустити Remote Desktop Host, надати групі розробників спільний доступ до сервера для налаштування певних додатків і бази даних. Надалі, надавати віддалений до доступ до цього сервера не планувалося. Розробників було більше 2-х і всі хотіли працювати одночасно. І клятвено обіцяли закінчити менш ніж за 4 місяці.

Сказано зроблено. Було піднято Remote Desktop Host на Windows 2012 R2 і ми почали користуватися 120-ти денним безкоштовним періодом. Але ... 4 місяців не вистачило (як завжди). Використовувати ж легальний ключ для TS не хотілося, так як робота, тимчасова, як я вже сказав раніше. Довелося ... скористатися знаннями, які ви тільки що отримали.

Ключ реєстру, який відповідає за відлік 120-ти денного Grace Period розташований тут:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ RCM \ GracePeriod

У групи Адміністратори є доступ тільки на читання цього ключа.

Був використаний Метод 1. Так би мовити, Microsoft самі себе і покарали:)

SUBINACL / keyreg "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ RCM \ GracePeriod" / setowner = administrators / grant = administrators = f

Змінили власника і дали повний доступ адміністраторам

далі простіше.

Видаляємо вміст цього ключа

reg delete "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ RCM \ GracePeriod" / va / f

І після перезавантаження отримуємо .... Правильно! 120 днів нового безкоштовного періоду.

Наприклад, можна цю команду оформити у вигляді скрипта і запускати кожні 115 днів за розкладом.

Користуватися цим чи ні - вирішувати вам, на підставі консультацій з вашою совістю і жабою 🙂