Редактирование реестра из командной строки. Основы работы с реестром Windows
Бывает так, что Вам нужно изменить некий параметр в реестре на компьютерах в сети. Естественно, чем больше у Вас компьютеров, тем утомительнее это делать вручную. В данном случае процесс можно автоматизировать созданием bat-файла, который и внесет все необходимые изменения на компьютеры сети. Далее этот файл можно распространить посредством групповых политик, специального ПО вроде Kaspersky Security Center или просто прописать в самом файле имена компьютеров и запустить со своей машины.
В общем виде команда reg add выглядит следующим образом:
reg add имя_раздела
Разберем её синтаксис подробнее. Для лучшего понимания взглянем на пример записи в реестре:
Данная запись лежит в реестре по адресу HKEY_CURRENT_USER\Software\Avast Software\Avast Browser Cleanup. Это и есть имя раздела . Данную запись мы возьмем просто как пример. Если Вы собрались редактировать реестр через bat-файл, то Вы уж точно знаете, куда добавлять необходимую Вам запись. 🙂
Если запись будет добавляться в реестр другого компьютера, то перед именем раздела необходимо прописать имя компьютера , вот так: \\имя_компьютера\имя_раздела. Таким образом, Вы сразу можете прописать в bat-файле имена компьютеров и запустить его один раз у себя. Естественно, у Вас должны быть соответствующие права в домене.
/v имя записи. На скриншоте таких записей несколько. Например, PluginsCleaned .
/ve задаёт нулевое значение для записи, добавляемой в реестр. Не обязательно.
/t тип данных — записи реестра могут принимать один из следующих типов данных:
REG_SZ
REG_MULTI_SZ
REG_DWORD_BIG_ENDIAN
REG_DWORD
REG_BINARY
REG_DWORD_LITTLE_ENDIAN
REG_LINK
REG_FULL_RESOURCE_DESCRIPTOR
REG_EXPAND_SZ
/s разделитель — задает символы для разделения копий данных. Используется при типе данных REG_MULTI_SZ в случае размещения более одной записи в списке. Если разделитель не задан, то используется разделитель \0, заданный по умолчанию.
/d значение — значение добавляемой записи реестра.
/f — добавляет раздел или запись без запроса подтверждения. Не обязательно.
Получить подробную справку в командной строке можно, введя
reg add /?Возвращаясь к нашему примеру. Я ввел в командную строку:
reg add "HKEY_CURRENT_USER\Software\Avast Software\Avast Browser Cleanup" /v Primer /t REG_DWORD /d 0В данном случае кавычки нужны, чтобы командная строка нормально восприняла пробелы в имени раздела. Как видите, я создал параметр Primer с типом REG_DWORD и значением 0 .
Иногда, чтобы поменять что-то в реестре (выполнить твик или просто внести нужное вам изменение) в первую очередь требуется получить доступ к ветке/ключу реестра. Казалось бы, для администратора это не проблема. Но нюанс в том, что в некоторые ветки реестра Windows не может внести изменения даже администратор. Доступ к таким веткам ограничивается ACL, в которых либо отсутствуют права записи для группы локальных администраторов, либо владельцем таких разделов назначены TrustedInstaller или System. В этом руководстве мы покажем несколько простых способов предоставить администратору права владельца и полные права на защищенный таким образом раздел реестра.
Не будем рассматривать графический способ смены владельца и назначения права через утилиту regedit.exe, и остановимся на возможностях смены владельца любого ключа реестра и предоставления доступа из командной строки . Все описанные ниже методы работают во всех версиях Windows!
Получение прав владельца на ключ реестра с использованием утилиты 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 \ System 32 и тогда он будет запустится по имени. Мы предлагаем скопировать 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 \ System 32 (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"
Первая команда сделает группу локальных администраторов владельцем ключа, а вторая предоставит полный доступ к ключу.
Вам просто надо поменять значение ключа между кавычками(«»), на тот, который вам нужен.
Получение прав владельца на ключ реестра с использованием встроенной команды 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 ] в скрипте будет установлен как-то так:
Как показано в таблице это даст полный доступ Администраторам и Системе, а также право на изменение создателю ключа и все остальным.
Окончательно строка будет выглядеть так:
\Registry\machine\HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla
Вы можете использовать любые комбинации ACL как вам нужно.
Примечание: Помните, что существующие разрешения для указанного в скрипте ключа будут заменены на новые. Не забывайте включить в скрипт разрешения для всех аккаунтов. Если вы забудете дать права аккаунту СИСТЕМА, то этот аккаунт будет удален из списка предоставления доступа.
ШАГ 2:
Сохраняем скрипт под именем ACL.TXT затем открываем командную строку от имени администратора и запускаем нашу команду:
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 дней по расписанию.
Пользоваться этим или нет – решать вам, на основании консультаций с вашей совестью и жабой 🙂
Реестр Windows хранит параметры конфигурации всей операционной системы Windows. С помощью утилиты командной строки Reg можно просматривать, добавлять, удалять, сравнивать и копировать элементы реестра. Поскольку реестр Windows крайне важен для корректной работы операционной системы, вносите изменения в реестр, лишь точно зная, как они повлияют на систему. Прежде чем редактировать реестр каким-либо способом, выполните полное резервное копирование системы и создайте снимок данных для восстановления системы. Тогда в случае ошибки вы сможете восстановить реестр и систему.
Разделы и параметры реестра Windows
Реестр Windows хранит конфигурационную информацию операционной системы, приложений, пользователей и оборудования. Эти данные содержатся в разделах (keys) и параметрах (values) реестра, которые размещаются в определенном корневом разделе (root key), который контролирует, как и когда используются разделы и параметры. В корневых разделах вы найдете главные разделы (main keys), управляющие параметрами системы, пользователей, приложений и оборудования. Эти разделы организованы в древовидную структуру, где разделы представлены папками. Так, в разделе HKEY_LOCAL MACHINE\SYSTEM\CurrentControlSet\Services находятся папки для всех служб, установленных в системе. В этих папках содержатся разделы реестра, хранящие важную конфигурационную информацию, и их подразделы (subkeys). Нужные разделы реестра задаются через их пути к папкам.
Команда REG управления реестром из командной строки
REG поддерживает несколько подкоманд, и мы рассмотрим некоторые из них.
- REG add - добавляет в реестр новый подраздел или элемент.
- REG delete - удаляет из реестра подраздел или элемент.
- REG query - выводит список элементов раздела и имена подразделов (если они есть).
- REG compare - сравнивает подразделы или элементы реестра.
- REG сору - копирует элемент реестра по указанному пути раздела на локальной или удаленной системе.
- REG restore - записывает в реестр ранее сохраненные подразделы, элементы и параметры.
- REG save - сохраняет копию указанных подразделов, элементов и параметров реестра в файл.