Основы работы с реестром Windows. Управление реестром Windows с помощью командной строки

Реестр 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 - сохраняет копию указанных подразделов, элементов и параметров реестра в файл.

В этой статье излагаются базовые принципы работы с реестром 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 хранится еще один «особенный» документ NTUSER.DAT . Редактировать или копировать эти ресурсы штатным методом не выйдет – нужны специальные утилиты. Однако, сделать резервную копию реестра можно через командную строку. Для этого можно использовать две функции – save и export. Начнем с первой.

Утилита 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"

Бывает так, что Вам нужно изменить некий параметр в реестре на компьютерах в сети. Естественно, чем больше у Вас компьютеров, тем утомительнее это делать вручную. В данном случае процесс можно автоматизировать созданием 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 .