В этой статье излагаются базовые принципы работы с реестром Windows, знание которых пригодится вам в настройке операционной системы при помощи твиков реестра.
Терминология
Прежде чем перейти к делу, нужно определиться с терминологией. В статьях о твиках реестра, размещенных на сайте автоустановки, используется официальная терминология Microsoft, поэтому термины вполне соответствуют элементам редактора реестра.
Рисунок 1 - Редактор реестра
Как видите, здесь нет никаких "веток" и "ключей". Теперь к делу.
REG-файл
REG-файл - это текстовый файл с расширением REG, составленный в определенном формате.
Формат REG-файла
Ниже приводится пример REG-файла, отключающего меню недавних документов.
;Отключить меню недавних документов
"NoRecentDocsMenu"=hex:01,00,00,00
Создание REG-файла
Создать REG-файл очень просто. Скопируйте код в любой текстовый редактор (например, Блокнот). Нажмите CTRL+S и сохраните файл с любым именем и расширением.reg, заключая оба в кавычки.
Рисунок 2 - Создание REG-файла
Синтаксис REG-файла
- Windows Registry Editor Version 5.00 - заголовок файла, являющийся его неотъемлемой частью. Также в качестве заголовка вы можете встретить REGEDIT4 - это формат Windows 98 / NT 4.0, который впрочем поймут и более новые операционные системы Windows. Подробнее о различиях в форматах можно прочитать на сайте JSO FAQ (на английском языке).
- ;Отключить меню недавних документов - комментарий. Все строки, начинающиеся с ; (точка с запятой) представляют собой комментарии.
- - это раздел реестра. Графически (в редакторе реестра) он представляет собой путь к параметру. В формате REG-файлов разделы всегда заключаются в квадратные скобки. В этом примере (под)раздел Explorer принадлежит разделу HKEY_CURRENT_USER.
- "NoRecentDocsMenu"=hex:01,00,00,00 - параметр реестра и его значение. В зависимости от значения параметра, меняется поведение операционной системы или объекта. Многие параметры можно настроить в графическом интерфейсе операционной системы, но далеко не все. В таких случаях для изменения параметра используют редакторы реестра, твикеры или REG-файлы.
В REG-файле может содержаться несколько разделов и параметров реестра, но заголовок используется только в самом начале.
Windows Registry Editor Version 5.00;Отключить перезагрузку в случае BSOD
"AutoReboot"=dword:00000000;Отключить уведомление на экране приветствия о непрочитанных сообщениях
"MessageExpiryDays"=dword:00000000
Данный REG-файлом был получен путем экспорта из редактора реестра regedit.exe. При помощи REG-файлов можно вносить изменения в системный реестр - эта операция называется импортом параметров реестра.
Экспорт параметров реестра
Экспорт параметров реестра является несложной задачей. Как правило, параметры экспортируют перед внесением изменений в реестр (резервное копирование), либо для того чтобы создать REG-файл для последующего импорта в реестр другого компьютера или при автоматической установке системы.
Экспортировать параметры реестра можно различными способами.
Редактор реестра Windows (regedit.exe)
В состав ОС Windows входит программа для редактирования реестра - regedit.exe . Поскольку она располагается в системном каталоге, для ее запуска в командной строке не нужно указывать полный путь (например, достаточно будет такой последовательности: Пуск - Выполнить - regedit - OK ).
Для того чтобы экспортировать раздел реестра, достаточно щелкнуть по нему правой кнопкой мыши и выбрать из контекстного меню команду Экспортировать (в Windows 2000 эта команда расположена в меню Файл ).
Другие редакторы реестра
Существует великое множество программ для внесения изменений в системный реестр, которые также обладают возможностью экспорта параметров. Если Вы часто работаете с реестром, то Вам, наверняка, пригодится программа, обладающая адресной строкой. В адресную строку можно вставить скопированный (из статьи или из сообщения на форуме) раздел реестра и быстро перейти к нужному параметру. Примером такой программы может служить .
Командная строка
Из командной строки экспорт параметров реестра можно выполнить при помощи команды REG EXPORT , обладающей следующим синтаксисом.
REG EXPORT Полный путь к разделу реестра в виде: КОРЕНЬ\Подраздел (только для локального компьютера). Корневой раздел. Значения: [ HKLM | HKCU | HKCR | HKU | HKCC ]. Полный путь к разделу реестра в выбранном корневом разделе. Имя файла на диске для экспорта. Примеры: REG EXPORT HKLM\Software\MyCo\MyApp AppBkUp.reg Экспортирует все подразделы и значения параметров раздела MyApp в файл AppBkUp.reg
Импорт параметров реестра
Импорт параметров реестра можно осуществить несколькими способами.
Запуск REG-файла при помощи графического интерфейса
Это самый простой способ. Он заключается в запуске REG-файла, содержащего необходимые параметры, двойным щелчком мыши или из командной строки.
Двойной щелчок мыши
Как это ни тривиально звучит, но двойным щелчком мыши на REG-файле можно внести изменения в реестр. Правда, сначала система уточнит, действительно ли вы хотите это сделать. В случае положительного ответа изменения будут внесены.
Рисунок 3 - Система запрашивает подтверждение на внесение изменений.
Из-за этого запроса такой способ не подходит для импорта параметров в реестр во время автоматической установки системы. Но есть и другие способы.
Командная строка
Для импорта REG-файлов из командной строки существует команда REGEDIT . Набрав в командной строке
Вы получите точно такое же диалоговое окно, как при двойном щелчке мыши. Подавить появление диалогового окна можно запустив команду с параметром /S . Именно этот способ чаще всего применяется во время автоматической установки Windows .
Команда REG ADD
При помощи команды REG ADD также можно импортировать параметры реестра. Она удобна тем, что команды для импорта параметров можно включить в состав пакетного файла, выполняющего также и другие задачи (т. е. нет необходимости в дополнительном REG-файле). Например, эта команда нередко применяется для импорта значений реестра в раздел RunOnceEx и последующей установки программ при первом входе в систему. Синтаксис команды достаточно прост.
REG ADD [\\\] Имя удаленного компьютера, если оно опущено, то по умолчанию считается равным имени локального компьютера. На удаленных компьютерах доступны только разделы HKLM и HKU. Полный путь к разделу реестра в виде КОРЕНЬ\Подраздел. Корневой радел. Значения [ HKLM | HKCU | HKCR | HKU | HKCC ]. Полный путь к разделу реестра в выбранном корневом разделе. /v Имя добавляемого параметра в указанном разделе. /ve Добавить пустой параметр (По умолчанию) в указанный раздел. /t Типы данных. По умолчанию, считается равным REG_SZ. /s Определяет разделитель, который используется для разделения данных в многострочных параметрах типа REG_MULTI_SZ. По умолчанию, считается равным "\0". /d Значение, присеваемое добавляемому параметру реестра. /f Принудительно перезаписывать существующие записи реестра без предупреждения. Примеры: REG ADD \\ABC\HKLM\Software\MyCo Добавляет раздел HKLM\Software\MyCo на удаленный компьютер ABC REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead Добавляет параметр с именем: Data, типом: REG_BINARY, и значением: fe340ead REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail Добавляет параметр с именем: MRU, типом: REG_MUTLI_SZ, и значением: fax\0mail\0\0 REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d %%systemroot%% Добавляет параметр с именем: Path, типом: REG_EXPAND_SZ, и значением: %systemroot% Примечание: Используйте в строке двойные символы процента (%%)
INF-файл
Импортировать параметры в реестр можно и при помощи INF-файлов. Их общий синтаксис несколько сложнее, чем у REG-файлов, но непосредственно запись в реестр осуществляется достаточно просто. Ниже приводится пример из аддона Msgina
Signature="$Windows NT$" Msgina OptionDesc="Msgina" Tip="Библиотека GINA входа в систему" Modes=0,1,2,3 AddReg=Msgina.AddReg HKLM,"Software\Policies\Microsoft\Windows\System\Shutdown","ShowHibernateButton",0x10001,1 HKLM,"Software\Policies\Microsoft\Windows\System\Shutdown","HibernateAsButton",0x10001,1
Примечание . Дополнительную информацию об INF-файлах можно найти в .
В этой статье мы рассмотрим утилиту reg командной строки, которая отвечает за работу с реестром Windows, например, запуск реестра из командной строки или правка реестра из командной строки. Сам реестр содержит в своем составе основные настройки системы Windows (профили пользователей и приложений), он является своеобразным сердцем системы. Фактически, реестр являются все го лишь набором двоичных файлов, их нельзя открыть, запустить или отредактировать рядовым способом, особенно, в момент работы самой системы Windows.
Или regedt32, предназначен для просмотра и редактирования системного реестра и его содержимого, а запуск или правка реестра из командной строки осуществляется с помощью утилиты reg .
Ниже приведен список пяти корневых разделов и их коротких обозначений:
- HKEY_CLASSES_ROOT (HKCR),
- HKEY_CURRENT_USER (HKCU),
- HKEY_LOCAL_MACHINE (HKLM),
- HKEY_USERS (HKU),
- HKEY_CURRENT_CONFIG (HKCC).
Что бы просмотреть разделы реестра командной строкой, надо прописать
reg query «ИмяРоздела»
В папке %SystemRoot%\system32\config хранятся пять системных файлов:
- SYSTEM
- SECURITY
- SAM
- SOFTWARE
- DEFAULT
плюс, в каталоге Documents and Settings
Утилита reg командная строка, команда save
Данная команда полезна в тот момент, если надо сохранить реестр, перед тем, как например производится правка реестра из командной строки, что бы при беде вновь восстановить. И так, сама команда имеет следующий синтаксис:
rеg save "ИмяРаздела" "ИмяФайла"
ИмяРазделя – указываем путь к сохраняемому разделу, например
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Sеrvicеs
ИмяФайла – здесь указывается путь к файлу куста (registry hive), который нужно создать, он должен иметь расширение.hiv, например: “C:\regsave\sеrvicеs.hiv”. Если надо работать с удаленной системой, то стоит помнить, что удаленно доступны только ветки HKLM и HKU. Если при попытке просмотреть разделы реестра командной строкой на удаленной машине возникают трудности, например, после ввода команды:
rеg query \\192.168.1.6\HKLM
просмотреть содержимое HKLM на компьютере с IP адресом 192.168.1.6, возникнет ошибка типа «Отказано в доступе» или «путь не найден», то, стоит проверить:
- Запущена ли на удаленной машине служба «Удаленный реестр» (командная строка для предлагает утилиты net start «ИмяСлужбы» и net stop «ИмяСлужбы»)
- Открыт ли простой общий доступ: Свойства папки, снять галочку с «Использовать простой общий доступ к файлам и папкам »
- Проверить, разрешен ли вообще доступ к компьютеру.
- Используется ли пароль в учетной записи администратора, если нет, то стоит его присвоить (Защита от пустых паролей )
И, даже проделав все это, вполне возможно, что запуск команды не даст результата и в доступе будет отказан, мне помогло выполнение предварительной команды
tasklist /s 192.168.1.6 /u ИмяПользователя /p Пароль
тут я запустил t для просмотра запущенных процессов на удаленной машине, используя пароль администратора, фактически авторизировался, после, манипуляции прошли на ура (с Семерки подключал удаленный реестр машины Windows XP Sp3).
rеg save HKLM\SYSTEM\CurrentControlSet\Servicеs "C:\regsave\servicеs.hiv"
если все пройдет хорошо, то после запуска команды появится сообщение «Операция успешно завершена», а в каталоге regsave появится гордый файл куста servicеs.hiv. Для того, что бы вернуть прежний вид измененному разделу, используя ранее сохраненный слепок, стоит выполнить команду:
rеg restore HKLM\SYSTЕM\CurrentControlSet\Sеrviсеs "C:\regsave\services.hiv"
с большой вероятностью, что выбьет ошибка «отказано в доступе», скорее всего, система использует эту ветку, и поэтому она занята. Но, что бы удовлетворить желание действий, создадим временный раздел:
rеg add HKLM\SYSTEM\CurrentContrоlSet\Services\TEMP
тут в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services мы добавили временный раздел TEMP. Если ввести команду
rеg query HKLM\SYSTEM\CurrentCоntrolSet\Serviсеs\TEMP
то видно, что тут пока пусто. А теперь снова произведем запуск команды restore, но сделаем правку пути, куда будем перезаписывать данные:
rеg restore HKLM\SYSTЕM\CurrentContrоlSet\Services\TEMP "C:\regsave\services.hiv"
поскольку подраздел реестра TEMP, созданный командной строкой, не используется системой (мы его только что создали),то и данные туда успешно записались. Теперь, введя команду
rеg query HKLM\SYSTEM\CurrentControlSet\Serviсеs\TEMP
видно, что сюда импортировалось содержимое всего подраздела service. В результате этих действии видно, что неправильное использование команды restore может привести к простому замусориванию вашего реестра. Теоретически, что бы удалить подраздел TEMP надо ввести команду:
rеg delete HKLM\SYSTЕM\CurrentControlSet\Serviсеs\TEMP
но в моем случае выбило «отказано в доступе», видимо некоторые из импортированных подразделов система уже успела взять в разработку, остальные по отдельности удаляются легко.
Утилита reg командная строка, команда export
Есть и второй способ сделать слепок определенного реестра через командную строку. Для этого используется утилита reg export, ее запуск позволяет создать «заплатки» – файла с расширением.reg, довольно часто с ними приходилось сталкиваться в компьютерных играх, вот пока «заплатку» не запустишь, что бы добавилась информация об игре в систему, игрушка не будет работать. Положительная сторона таких файлов в том, что их достаточно запустить, что бы информация сама записалась куда надо. Запуск реестра из командной строки. Ну что же, попробуем все тот же подраздел Services экспортировать:
reg export HKLM\SYSTЕM\CurrentControlSet\Services "C:\regsave\sеrviсеs.reg"
Всего существует одиннадцать процедур, которые способна выполнять директива REG: QUERY, ADD, DELETE, COPY, SAVE, LOAD, UNLOAD, RESTORE, COMPARE, EXPORT, IMPORT . Каждая из этих процедур имеет, как правило, собственный набор параметров.
При вызове из командной строки директива REG пересылает в окружение операционной системы так называемый код возврата: сообщение об успешном или неуспешном выполнении операции. Если код возврата равен 0, это означает, что операция была выполнена успешно, если же она завершилась с ошибкой, код возврата будет равен 1.
Более подробные сведения об использовании утилиты REG вы можете получить, набрав в командной строке директиву REG /?, чтобы получить информацию о какой-либо из перечисленных процедур, воспользуйтесь командой REG /?.
Команда REG QUERY отправляет в системный реестр Windows запрос о содержимом ветвей, ключей, подразделов или параметров, и выводит на экран результат обработки этих запросов. В общем виде синтаксис данной команды записывается следующим образом:
REG QUERY [\Компьютер\]Путь
Компьютер - имя компьютера в локальной сети, если директива предназначена для обработки на удаленном компьютере. В случае, если этот параметр опущен, команда выполняется на локальном компьютере.
/v - запрос о содержимом указанного раздела реестра.
Параметр - вывести имя и значение запрашиваемого параметра в указанном разделе.
/ve - запрос стандартного параметра с пустым именем.
/s - вывести список всех подразделов данного раздела реестра вместе с их содержимым.
Примеры использования:
Показывает имя и значение параметра ProxyEnable в разделе реестра HKCC\Softvare\Microsoft\windows\CurrentVersion\Internet Settings:
REG QUERY HKCC\Softvare\Microsoft\windows\CurrentVersion\Internet Settings /v ProxyEnable
Показать список всех подразделов и содержащихся в них параметров для раздела реестра HKLM\Software\Microsoft\Office:
REG QUERY HKLM\Software\Microsoft\Office /s
Данная команда добавляет в выбранный раздел реестра указанные пользователем параметры. Общий синтаксис этой директивы выглядит следующим образом:
REG ADD [\\\]
В составе директивы могут использоваться следующие параметры:
Раздел - полный путь к редактируемому разделу реестра в формате [\\\], где - имя компьютера в локальной сети, если директива предназначена для обработки на удаленном компьютере. В случае, если этот параметр опущен, команда выполняется на локальном компьютере. Путь - полный путь к целевому разделу реестра в виде корень\ключ\подраздел, где корень - сокращенное обозначение ветви реестра (HKLM, HKCU, HKCR, HKU или HKCC), а ключ\подраздел - полный путь к искомому подразделу в иерархии реестра, включая все вложенные подразделы. На удаленном компьютере возможно обращаться только к разделам реестра HKLM и HKU.
/v - имя параметра, добавляемого в указанный раздел.
/ve - добавить пустой параметр (параметр по умолчанию) в указанный раздел.
/t - явное указание на тип данных добавляемого в указанный раздел реестра параметра. Может принимать одно из следующих значений: REG_SZ, REG_MULTI_SZ, REG_DWORD_BIG_ENDIAN, REG_DWORD, REG_BINARY, REG_DWORD_LITTLE_ENDIAN, REG_NONE или REG_EXPAND_SZ. Если тип параметра не указан, по умолчанию для данного параметра определяется тип REG_SZ.
/s - тип разделителя значений для разграничения данных, хранящихся в многострочных параметрах типа REG_MULTI_SZ. По умолчанию разделитель имеет вид «\0».
/d - значение, присваиваемое добавляемому параметру реестра.
/f - перезаписывать уже существующие в реестре параметры и значения, замещая их указанными в командной строке, без демонстрации предупреждений.
Примеры использования:
Добавляет подраздел NewSubkey в раздел реестра HKLM\Software на удаленном компьютере NetComp:
REG ADD \\NetComp\HKLM\Software\NewSubkey
Добавляет в подраздел локального реестра HKLM\Software\NewSubkey параметр с именем Value1 типа REG_SZ, и присваивает ему значение ac23456ffed:
REG ADD HKLM\Software\NewSubkey /v Value1 /t REG_SZ /d ac23456ffed
Добавляет в подраздел локального реестра HKLM\Software\NewSubkey параметр с именем Path типа REG_EXPAND_SZ, и присваивает ему значение %systemroot%\System32:
REG ADD HKLM\Software\NewSubkey /v Path /t REG_EXPAND_SZ /d %%systemroot%%\System32
С использованием данной команды выполняется удаление из реестра указанного ключа, подраздела или параметра. Общий синтаксис этой директивы выглядит следующим образом:
REG DELETE [\Компьютер\]Путь
В составе директивы могут использоваться следующие параметры:
Компьютер - имя компьютера в локальной сети, если директива предназначена для обработки на удаленном компьютере. В случае, если этот параметр опущен, команда выполняется на локальном компьютере. На удаленном компьютере возможно обращаться только к разделам реестра HKLM и HKU.
Путь - полный путь к целевому разделу реестра в виде корень\ключ\подраздел, где корень - сокращенное обозначение ветви реестра (HKLM, HKCU, HKCR, HKU или HKCC), а ключ\подраздел - полный путь к искомому подразделу в иерархии реестра, включая все вложенные подразделы.
/v - удаление параметра с указанным именем. Если имя опущено, из данного раздела будут удалены все содержащиеся в нем параметры.
/ve - удалять все безымянные параметры, содержащиеся в данном разделе.
/va - запрашивать все параметры из данного раздела реестра.
/f - выполнять удаление без дополнительного предупреждения.
Примеры использования:
Удаляет подраздел NewSubkey вместе со всем его содержимым из раздела реестра HKLM\Software.
REG DELETE \HKLM\Software\NewSubkey
Без предварительного подтверждения удаляет параметр PARAM из раздела реестра HKLM\Software\Prog.
REG DELETE \HKLM\Software\Prog /v PARAM /f
С использованием команды REG COPY можно скопировать разделы, подразделы и параметры из одного раздела реестра в другой, как на локальном компьютере, так и по сети. Общий синтаксис этой директивы выглядит следующим образом:
REG COPY
В составе директивы могут использоваться следующие параметры:
Полное описание раздела, из которого копируются данные, в формате [\\\], где - имя компьютера в локальной сети, если директива предназначена для обработки на удаленном компьютере. В случае, если этот параметр опущен, команда выполняется на локальном компьютере. Путь - полный путь к целевому разделу реестра в виде корень\ключ\подраздел, где корень - сокращенное обозначение ветви реестра (HKLM, HKCU, HKCR, HKU или HKCC), а ключ\подраздел - полный путь к искомому подразделу в иерархии реестра, включая все вложенные подразделы. На удаленном компьютере возможно обращаться только к разделам реестра HKLM и HKU.
- полное описание раздела, в который копируются данные. Формат записи такой же, как и в предыдущем случае.
/s - копировать все подразделы и параметры, содержащиеся в указанном разделе.
/f - выполнять копирование без предварительного предупреждения. Если в целевом разделе уже присутствуют подразделы и параметры, имена которых совпадают с копируемыми, они будут перезаписаны.
Примеры использования:
Скопировать все содержимое раздела реестра HKLM\Software\Program в раздел HKLM\Software\Restore:
REG COPY HKLM\Software\Program HKLM\Software\Restore /s
Скопировать все параметры раздела реестра HKLM\Software\Microsoft с удаленного компьютера Server в раздел HKLM\Software\Server локального компьютера:
REG COPY \\SERVER\HKLM\Software\Microsoft HKLM\Software\Server
Команда REG SAVE позволяет сохранить выбранный ключ или подраздел реестра вместе с хранящимися в нем параметрами на диск в файл с расширением.hiv, который впоследствии может быть импортирован в реестр. Стандартный формат записи этой команды выглядит следующим образом:
REG SAVE
В составе директивы могут использоваться следующие параметры:
Описание локального раздела реестра, содержимое которого вы планируете сохранить в файле, должно включать обозначение ветви (HKLM, HKCU, HKCR, HKU или HKCC) и всех подразделов. Использование этой команды для удаленных компьютеров не допускается.
- имя файла, в который сохраняется содержимое раздела, включая путь к этому файлу. Если путь не указан, файл автоматически создается в текущей папке вызвавшего команду процесса.
Примеры использования:
Сохраняет подраздел реестра HKCC\System\CurrentControlSet вместе со всем его содержимым в файл ControlSet.hiv, создаваемый в текущей папке:
REG SAVE HKCC\System\CurrentControlSet ControlSet.hiv
С использованием этой команды можно восстановить поврежденный ключ, раздел или подраздел реестра из файла.hiv, созданного ранее командой REG SAVE. В процессе восстановления все существующие в указанном разделе подразделы и параметры реестра перезаписываются. Стандартный формат данной команды таков:
REG RESTORE
В составе директивы могут использоваться следующие параметры:
Описание локального раздела реестра, содержимое которого вы планируете восстановить из файла с указанным именем, должно включать обозначение ветви (HKLM, HKCU, HKCR, HKU или HKCC) и всех подразделов. Использование этой команды для удаленных компьютеров не допускается.
Примеры использования:
Восстанавливает подраздел реестра HKLM\Software\Microsoft из ранее сохраненного на диске файла MSBackup.hiv, перезаписывая все содержимое указанного раздела:
REG RESTORE HKLM\Software\Microsoft MSBackup.hiv
Действие команды REG LOAD в целом аналогично директиве REG RESTORE, с тем лишь исключением, что данная команда загружает ранее сохраненные в файле.hiv данные только в те ветви реестра, которые хранятся в оперативной памяти компьютера в ходе всего сеанса работы пользователя с операционной системой, то есть в дочерние разделы и подразделы ветвей HKLM и HKU. Для загрузки данных из файла в реестре обычно создается новый раздел с заданным пользователем именем. Синтаксис записи этой команды выглядит следующим образом:
REG LOAD
В составе директивы могут использоваться следующие параметры:
Описание локального раздела реестра, содержимое которого вы планируете загрузить из файла с указанным именем; разрешается использовать только обозначение ветвей HKLM и HKU. В качестве имени раздела можно вводить произвольное имя, которое будет автоматически назначено вновь созданному разделу указанной ветви реестра. Использование этой команды для удаленных компьютеров не допускается.
- имя файла, из которого восстанавливается содержимое раздела.
Примеры использования:
Загружает данные из файла MSBackup.hiv в подраздел реестра HKLM\Software\NewKey:
REG LOAD HKLM\Software\NewKey MSBackup.hiv
Директива REG UNLOAD выгружает из памяти локального компьютера хранящиеся там данные реестра, отображающиеся в иерархической структуре реестра в виде разделов и подразделов ветвей HKLM и HKU. Формат записи:
REG UNLOAD
В составе директивы могут использоваться следующие параметры:
Описание локального раздела реестра, содержимое которого требуется выгрузить из памяти. Разрешается использовать только обозначение ветвей HKLM и HKU, а также их дочерних ключей и подразделов. Использование этой команды для удаленных компьютеров не допускается.
Примеры использования:
Выгружает из памяти компьютера содержимое ветви реестра HKLM\Software:
REG UNLOAD HKLM\Software
Эта команда позволяет выполнить операцию сравнения двух разделов реестра. Стандартный формат записи этой команды выглядит следующим образом:
REG COMPARE
В составе директивы могут использоваться следующие параметры:
Полное описание первого проверяемого раздела, в формате [\\\], где - имя компьютера в локальной сети, если директива предназначена для обработки на удаленном компьютере. В случае, если этот параметр опущен, команда выполняется на локальном компьютере. Путь - полный путь к целевому разделу реестра в виде корень\ключ\подраздел, где корень - сокращенное обозначение ветви реестра (HKLM, HKCU, HKCR, HKU или HKCC), а ключ\подраздел - полный путь к искомому подразделу в иерархии реестра, включая все вложенные подразделы. На удаленном компьютере возможно обращаться только к разделам реестра HKLM и HKU.
- полное описание второго раздела, с которым сверяются данные. Формат записи такой же, как и в предыдущем случае.
/v - сравнивать только параметры с указанным именем.
/ve - выполнить сравнение безымянных параметров, хранящихся в указанных разделах.
/s - сравнивать значения всех подразделов и параметров в обоих разделах реестра.
- установить формат вывода сравниваемых данных (если формат вывода не указан, по умолчанию его значение принимается, как /od). В качестве этого параметра может быть использован один из четырех возможных ключей:
/oa - отображать и совпадения, и отличия;
/od - отображать только отличия;
/os - отображать только совпадения;
/on - не отображать результаты сравнения.
В отличие от других процедур команды REG, директива REG COMPARE имеет не два, а три различных кода возврата: 0 - процедура выполнена успешно, сравниваемые данные идентичны; 1 - в процессе выполнения процедур произошла ошибка; 2 - процедура выполнена успешно, сравниваемые данные различаются.
Примеры использования:
Сравнивает содержимое подразделов реестра HKLM\Software\ProgApp и HKLM\Software\Prog:
REG COMPARE HKLM\Software\ProgApp HKLM\Software\Prog
Сравнивает значение параметров с именем Value1, один из которых хранится в разделе HKLM\Software\ProgApp, а другой - в разделе HKLM\Software\Prog локального реестра:
REG COMPARE HKLM\Software\ProgApp HKLM\Software\Prog /v Value1
Сравнивает содержимое подраздела реестра HKLM\Software\Microsoft, хранящегося на удаленном компьютере SERVER, с аналогичным разделом реестра локального компьютера:
REG COMPARE \\SERVER\HKLM\Software\Microsoft \\. /s
Команда REG EXPORT позволяет сохранить выбранный ключ или подраздел реестра вместе с хранящимися в нем параметрами на диск в файл с расширением.reg, который впоследствии может быть импортирован в реестр. Стандартный формат записи этой команды выглядит следующим образом:
REG EXPORT
В составе директивы могут использоваться следующие параметры:
- описание локального раздела реестра, содержимое которого вы планируете экспортировать в файл, должно включать обозначение ветви (HKLM, HKCU, HKCR, HKU или HKCC) и всех подразделов. Использование этой команды для удаленных компьютеров не допускается.
- имя файла, в который экспортируется содержимое раздела, включая путь к этому файлу. Если путь не указан, файл автоматически создается в текущей папке вызвавшего команду процесса.
Примеры использования:
Экспортирует подраздел реестра HKLM\Software\Adobe вместе со всем его содержимым в файл Adobe.reg, создаваемый в текущей папке:
REG EXPORT HKLM\Software\Adobe Adobe.reg
Директива REG IMPORT импортирует содержимое REG-файла в реестр Windows. Данный файл может храниться только на локальном компьютере. Формат записи:
REG IMPORT
Где - имя и путь к локальному REG-файлу на данном компьютере.
Пример использования:
Импортирует в реестр содержимое файла system.reg, хранящегося на диске C: .
Иногда, чтобы поменять что-то в реестре (выполнить твик или просто внести нужное вам изменение) в первую очередь требуется получить доступ к ветке/ключу реестра. Казалось бы, для администратора это не проблема. Но нюанс в том, что в некоторые ветки реестра 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 дней по расписанию.
Пользоваться этим или нет – решать вам, на основании консультаций с вашей совестью и жабой 🙂