На нашем ресурсе уже есть публикация, описывающая основной способ работы с системным реестром Windows: Изменение параметров cистемного реестра Windows. Также мы рассматривали способ автоматизации процесса при помощи специальных файлов: Создание reg-файлов. Синтаксис редактирования записей реестра — позволяющий значительно упростить монотонную работу и воспроизведение часто используемых настроек. В рамках данной статьи мы затронем логическое продолжение темы, а именно, поговорим о том, как редактировать реестр из командной строки.
Содержание статьи:
Точнее сказать, мы, разумеется, не будем раз за разом вручную прописывать нужные параметры в окне консоли, не для этого данный способ нужен, мы рассмотрим вариант внесения изменений в системный реестр Windows при помощи bat-файлов.
Достаточно подробно о создании и использовании батников речь шла в записи Пакетные файлы (bat, батники) Windows, ещё одна функция, которую можно и нужно использовать — изменение записей реестра при помощи cmd языка.
Использование батников для редактирования реестра иногда может быть выгоднее и удобнее, нежели работа со стандартными для этих целей reg-файлами.
- батники шире используются в администрировании;
- батники имеют режим тихого запуска (без всплывающих окон);
- батники можно запускать с повышенными правами, то есть от имени Администратора;
- с помощью бат-файлов возможна работа с реестром сетевых машин.
Именно для таких частных случаев будет полезно знать, как написать батник для редактирования системного реестра Windows.
Работа с реестром из командной строки
Синтаксис бат-файлов и процесс их создания описан в статье, приведённой выше, в данной же публикации затронем исключительно тему, касающуюся выполнения функции изменения реестра из командной строки.
Сразу отметим, что в bat-файлах не требуется заголовок в начале файла по типу того, что используется в reg-файлах: Windows Registry Editor Version 5.00 — здесь можно начинать писать команду с первой же строки.
Для начала приведём основные параметры, используемые при работе с реестром из командной строки:
- /v — имя добавляемого/изменяемого ключа;
- /ve — добавление пустого параметра;
- /t — параметр для указания типа добавляемых/изменяемых данных;
- /d — значение, присваиваемое параметру;
- /s — применение команды ко всем вложенным ключам;
- /f — отключение системных предупреждений при выполнении операции.
Но, конечно, основа любого батника Windows — сама команда. Итак, приведём список команд, используемых для редактирования реестра.
reg add — команда для добавления данных, будь то параметры, ключи или целые ветки.
Допустим, после вирусной атаки нам необходимо вернуть место хранения hosts файла (а также файлов lmhosts, networks и protocols) в директорию %SystemRoot%System32driversetc Для этого нужно выполнить команду:
reg add HKLMSYSTEMCurrentControlSetServicesTcpipParameters /v DataBasePath /t REG_EXPAND_SZ /d %%SystemRoot%%System32driversetc /f
Если немного применить фантазию и оформить батник, то код будет выглядеть примерно следующим образом:
@echo off ::батник для возврата хранения файлов hosts, lmhosts, networks, protocols в %SystemRoot%System32driversetc echo *** returns the directory system files by miradmin.ru *** reg add HKLMSYSTEMCurrentControlSetServicesTcpipParameters /v DataBasePath /t REG_EXPAND_SZ /d %%SystemRoot%%System32driversetc /f echo *** directory returned *** echo *** done *** pause
Вот такой файл, как в архиве, у нас получится: drivers_etc
Остальные примеры в данной статье будем приводить вымышленные, дабы при их тестировании не вносить нежелательных изменений в реестр
reg delete — команда для удаления указанной информации из реестра компьютера.
Чтобы удалить определённый параметр, нам достаточно указать его полный путь после команды удаления. Пример:
reg delete HKLMSoftwareGamesFootballUser1 /v Save
Данная команда удалит параметр Save из указанной ветки.
reg copy — команда для копирования параметров и ключей из одной ветки реестра в другую.
Для копирования параметров достаточно после команды последовательно прописать сначала исходную ветку, а потом изменяемую. Например:
reg copy HKLMSoftwareGamesFootballUser1 HKLMSoftwareGamesFootballUser2 /s
Данная команда скопирует всю информацию из ветки User1 в ветку User2.
reg export — команда для экспорта указанных веток реестра в виде *.reg файла на жёсткий диск.
Пример использования:
reg export HKLMSoftwareGamesFootball MyBackup.reg
В результате выполнения данной команды будет создан рег-файл с бэкапом раздела Football.
reg import — команда, позволяющая импортировать данные из reg-файла в реестр системы.
Пример использования:
reg import MyBackup.reg
В результате выполнения данной команды записи из рег-файла будут импортированы в реестр.
reg query — данная команда возвращает значение запрашиваемых параметров и кустов реестра.
Пример использования:
reg query HKLMSoftwareGamesFootball /v Run
В ответ будет возвращено значение параметра Run в реестре.
reg compare — команда позволяет сравнить две указанные последовательно ветки реестра.
Пример использования:
reg compare HKLMSoftwareGamesFootballUser1 HKLMSoftwareGamesFootballUser2
В ответ команда возвращает одно из значений: 0 — данные веток идентичны; 1 — при выполнении операции произошла ошибка; 2 — данные веток отличаются.
reg load, reg unload, reg save, reg restore — команды, позволяющие бэкапить и восстанавливать нужные ветки системного реестра Windows при помощи файлов *.hiv.
Изменение параметров реестра компьютера в сети
Выше мы рассмотрели достаточно широкие возможности батников в работе с реестром операционной системы. Последний момент, который отметим в контексте данной темы — это редактирование реестра компьютеров в локальной сети.
Для использования в работе с компьютерами в сети доступны все вышеперечисленные команды, единственное ограничение — операции из командной строки над реестром удалённых машин возможно производить только в разделах HKEY_ LOCAL_MACHINE (HKLM), и HKEY_USERS (HKU)

При этом, в командах, обрабатывающих сразу несколько разделов (например, копирование из одного раздела в другой, сравнение веток), одна из веток может располагаться на локальном компьютере, а другая на компьютере в сети.
То есть, для копирования ветки с удалённой машины на наш компьютер необходимо выполнить следующую команду:
reg copy \FRIENDHKLMSoftwareGamesFootballUser HKLMSoftwareGamesFootballUser /s
Указанная команда скопирует содержимое раздела User с компьютера FRIEND в локальной сети в реестр машины, с которой выполняется команда.
На этом заключительную статью описания общих принципов работы с реестром компьютера и с bat-файлами можно считать завершённой.
Безошибочных вам команд и корректных ключей реестра.
Нужно добавить запись в реестр с помощью BAT файла? Хотите по расписанию править ветки реестра? Нужно исправить значение реестра из командной строки? Нужно поправить реестр компьютера по сети? Легко!
В первую очередь следует знать, что работа с реестром требует прав администратора, так что командную строку запускаем от имени администратора, а BAT файл выполняем с наивысшими привилегиями.
Для работы с удалённым реестром тоже есть ограничения. Из командной строки с реестром удалённых машин можно работать только в разделах HKEY_ LOCAL_MACHINE (HKLM), и HKEY_USERS (HKU).
Параметры команд
- /v — имя параметра, добавляемого в выбранный раздел.
- /ve — добавление параметра с пустым именем (по умолчанию) в этот раздел.
- /t — тип данных
- REG_SZ
- REG_MULTI_SZ
- REG_EXPAND_SZ
- REG_DWORD
- REG_QWORD
- REG_BINARY
- REG_NONE
- если не указывается, то по умолчанию используется REG_SZ.
- /s — символ, используемый в качестве разделителя данных для параметров типа REG_MULTI_SZ. Если не указан, то в качестве разделителя используется «».
- /d — значение, присваиваемое добавляемому параметру реестра.
- /f — принудительно перезаписывает существующую запись реестра без запроса подтверждения.
- /reg:32 — указывает, что к разделу реестра следует обращаться с помощью представления для 32-разрядных приложений.
- /reg:64 — указывает, что к разделу реестра следует обращаться с помощью представления для 64-разрядных приложений.
Команды
- REG QUERY
- REG ADD
- REG DELETE
- REG COPY
- REG SAVE
- REG RESTORE
- REG LOAD
- REG UNLOAD
- REG COMPARE
- REG EXPORT
- REG IMPORT
- REG FLAGS
Вызов справки:
reg add /?
reg add — добавление и изменение данных в реестре.
REG ADD \ABCHKLMSoftwareMyCo
Добавляет раздел HKLMSoftwareMyCo на удаленном компьютере ABC
REG ADD HKLMSoftwareMyCo /v Data /t REG_BINARY /d fe340ead
Добавляет параметр (имя: Data, тип: REG_BINARY, данные: fe340ead)
REG ADD HKLMSoftwareMyCo /v MRU /t REG_MULTI_SZ /d faxmail
Добавляет параметр (имя: MRU, тип: REG_MULTI_SZ, данные: faxmail)
REG ADD HKLMSoftwareMyCo /v Path /t REG_EXPAND_SZ /d ^%systemroot^%
Добавляет параметр (имя: Path, тип: REG_EXPAND_SZ, данные: %systemroot%)
Примечание. В расширяемой строке используйте знак вставки ( ^ )
Пример BAT файла, который разрешает запуск неподписанных PowerShell скриптов:
@echo off
reg add "HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsPowerShell" /v "ExecutionPolicy" /t REG_SZ /d "Bypass" /f
reg delete — удаление данных в реестре.
REG DELETE HKLMSoftwareMyCoMyAppTimeout
Удаляет раздел реестра Timeout и все его подразделы и параметры.
REG DELETE \ZODIACHKLMSoftwareMyCo /v MTU
Удаляет параметр реестра MTU из раздела MyCo на компьютере ZODIAC
reg query — считать данные из реестра.
REG QUERY HKLMSoftwareMicrosoftResKit /v Version
Отображение значения параметра реестра Version
REG QUERY \ABCHKLMSoftwareMicrosoftResKitNtSetup /s
Отображение всех подразделов и их параметров в разделе реестра Setup
удаленного компьютера ABC
REG QUERY HKLMSoftwareMicrosoftResKitNtSetup /se #
Отображение всех подразделов и параметров со знаком "#" в качестве
разделителя для всех параметров типа REG_MULTI_SZ.
REG QUERY HKLM /f SYSTEM /t REG_SZ /c /e
Отображение раздела, параметра и данных с учетом реестра букв для точных
совпадений с "SYSTEM" типа REG_SZ из корневого раздела HKLM
REG QUERY HKCU /f 0F /d /t REG_BINARY
Отображение раздела, параметра и данных для совпадений с "0F"
типа REG_BINARY среди данных в корневом разделе HKCU
REG QUERY HKLMSOFTWARE /ve
Отображение параметра и данных для пустого значения (по умолчанию)
в разделе HKLMSOFTWARE
reg copy — копировать данные из одной ветки реестра в другую.
REG COPY HKLMSoftwareMyCoMyApp HKLMSoftwareMyCoSaveMyApp /s
Копирует все подразделы и параметры раздела MyApp в раздел SaveMyApp
REG COPY \ZODIACHKLMSoftwareMyCo HKLMSoftwareMyCo1
Копирует все параметры раздела MyCo с компьютера ZODIAC
в раздел MyCo1 на локальном компьютере
reg compare — сравнить две ветки реестра.
REG COMPARE HKLMSoftwareMyCoMyApp HKLMSoftwareMyCoSaveMyApp
Сравнивает все значения в разделе MyApp со значениями раздела SaveMyApp
REG COMPARE HKLMSoftwareMyCo HKLMSoftwareMyCo1 /v Version
Сравнивает значения Version в разделах MyCo и MyCo1
REG COMPARE \ZODIACHKLMSoftwareMyCo \. /s
Сравнивает все подразделы и значения параметров в разделе
HKLMSoftwareMyCo реестра на компьютере ZODIAC с аналогичным разделом
на текущем компьютере
reg export — экспорт данных реестра в REG файл.
REG EXPORT HKLMSoftwareMyCoMyApp AppBkUp.reg
Экспорт всех подразделов и параметров раздела MyApp в файл AppBkUp.reg
reg import — импорт данных в реестр из REG файла.
REG IMPORT AppBkUp.reg
Импорт записей реестра из файла AppBkUp.reg
reg flags— работа с флагами реестра.
REG FLAGS HKLMSoftwareMyCoMyApp QUERY
Отображает текущие флаги раздела MyApp.
REG FLAGS HKLMSoftwareMyCoMyApp SET DONT_VIRTUALIZE /s
Устанавливает флаг DONT_VIRTUALIZE
(и удаляет флаги DONT_SILENT_FAIL и RECURSE_FLAG) для раздела MyApp
и всех его подразделов
reg save, reg restore, reg load, reg unload — бэкап и восстановление реестра с помощью файлов HIV.
REG SAVE HKLMSoftwareMyCoMyApp AppBkUp.hiv
Сохранение куста MyApp в файл AppBkUp.hiv текущей папки
REG RESTORE HKLMSoftwareMicrosoftResKit NTRKBkUp.hiv
Восстановление файла NTRKBkUp.hiv заменой раздела ResKit
REG LOAD HKLMTempHive TempHive.hiv
Загрузка файла TempHive.hiv в раздел HKLMTempHive
REG UNLOAD HKLMTempHive
Выгрузка куста реестра TempHive в HKLM

В общем виде команда reg add выглядит следующим образом:
reg add имя_раздела [/v имя_записи|/ve] [/t тип_данных] [/s разделитель] [/d значение] [/f]
Разберем её синтаксис подробнее. Для лучшего понимания взглянем на пример записи в реестре:
Данная запись лежит в реестре по адресу HKEY_CURRENT_USERSoftwareAvast SoftwareAvast 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 в случае размещения более одной записи в списке. Если разделитель не задан, то используется разделитель , заданный по умолчанию.
/d значение — значение добавляемой записи реестра.
/f — добавляет раздел или запись без запроса подтверждения. Не обязательно.
Получить подробную справку в командной строке можно, введя
reg add /?
Возвращаясь к нашему примеру. Я ввел в командную строку:
reg add "HKEY_CURRENT_USERSoftwareAvast SoftwareAvast Browser Cleanup" /v Primer /t REG_DWORD /d 0
В данном случае кавычки нужны, чтобы командная строка нормально восприняла пробелы в имени раздела. Как видите, я создал параметр Primer с типом REG_DWORD и значением 0.
Вот результат данной команды:
Вот, пожалуй, и всё, что нужно знать о добавлении записей в реестр через командную строку Windows. Помните, что редактирование реестра требует осторожности, но, в целом, он не так страшен, как его описывают. 🙂
Is it possible to modify a registry value (whether string or DWORD) via a .bat/.cmd script?
Ross Ridge
37.8k7 gold badges79 silver badges111 bronze badges
asked Sep 24, 2008 at 21:52
Brian R. BondyBrian R. Bondy
335k122 gold badges589 silver badges634 bronze badges
1
@Franci Penov — modify is possible in the sense of overwrite with /f, eg
reg add "HKCUSoftwareetcetc" /f /v "value" /t REG_SZ /d "Yes"
Mark Mayo
11.9k12 gold badges54 silver badges84 bronze badges
answered Oct 4, 2008 at 13:26
2
You can use the REG command. From http://www.ss64.com/nt/reg.html:
Syntax:
REG QUERY [ROOT]RegKey /v ValueName [/s]
REG QUERY [ROOT]RegKey /ve --This returns the (default) value
REG ADD [ROOT]RegKey /v ValueName [/t DataType] [/S Separator] [/d Data] [/f]
REG ADD [ROOT]RegKey /ve [/d Data] [/f] -- Set the (default) value
REG DELETE [ROOT]RegKey /v ValueName [/f]
REG DELETE [ROOT]RegKey /ve [/f] -- Remove the (default) value
REG DELETE [ROOT]RegKey /va [/f] -- Delete all values under this key
REG COPY [\SourceMachine][ROOT]RegKey [\DestMachine][ROOT]RegKey
REG EXPORT [ROOT]RegKey FileName.reg
REG IMPORT FileName.reg
REG SAVE [ROOT]RegKey FileName.hiv
REG RESTORE \MachineName[ROOT]KeyName FileName.hiv
REG LOAD FileName KeyName
REG UNLOAD KeyName
REG COMPARE [ROOT]RegKey [ROOT]RegKey [/v ValueName] [Output] [/s]
REG COMPARE [ROOT]RegKey [ROOT]RegKey [/ve] [Output] [/s]
Key:
ROOT :
HKLM = HKey_Local_machine (default)
HKCU = HKey_current_user
HKU = HKey_users
HKCR = HKey_classes_root
ValueName : The value, under the selected RegKey, to edit.
(default is all keys and values)
/d Data : The actual data to store as a "String", integer etc
/f : Force an update without prompting "Value exists, overwrite Y/N"
\Machine : Name of remote machine - omitting defaults to current machine.
Only HKLM and HKU are available on remote machines.
FileName : The filename to save or restore a registry hive.
KeyName : A key name to load a hive file into. (Creating a new key)
/S : Query all subkeys and values.
/S Separator : Character to use as the separator in REG_MULTI_SZ values
the default is ""
/t DataType : REG_SZ (default) | REG_DWORD | REG_EXPAND_SZ | REG_MULTI_SZ
Output : /od (only differences) /os (only matches) /oa (all) /on (no output)
Dave Jarvis
29.9k39 gold badges177 silver badges310 bronze badges
answered Sep 24, 2008 at 21:54
Rui VieiraRui Vieira
5,2235 gold badges42 silver badges55 bronze badges
1
Yes, you can script using the reg command.
Example:
reg add HKCUSoftwareSomeProduct
reg add HKCUSoftwareSomeProduct /v Version /t REG_SZ /d v2.4.6
This would create key HKEY_CURRENT_USERSoftwareSomeProduct, and add a String value «v2.4.6» named «Version» to that key.
reg /? has the details.
answered Sep 24, 2008 at 21:54
Factor MysticFactor Mystic
26k16 gold badges83 silver badges95 bronze badges
This is how you can modify registry, without yes or no prompt and don’t forget to run as administrator
reg add HKEY_CURRENT_USERSoftwareMicrosoftWindowsShelletcetc /v Valuename /t REG_SZ /d valuedata /f
Below is a real example to set internet explorer as my default browser
reg add HKEY_CURRENT_USERSoftwareMicrosoftWindowsShellAssociationsUrlAssociationshttpsUserChoice /v ProgId /t REG_SZ /d IE.HTTPS /f
/f Force: Force an update without prompting «Value exists, overwrite
Y/N»/d Data : The actual data to store as a «String», integer etc
/v Value : The value name eg ProgId
/t DataType : REG_SZ (default) | REG_DWORD | REG_EXPAND_SZ |
REG_MULTI_SZ
Learn more about Read, Set or Delete registry keys and values, save and restore from a .REG file. from here
answered May 29, 2016 at 15:41
Shersha FnShersha Fn
1,4313 gold badges25 silver badges34 bronze badges
1
You can make a .reg file and call start on it. You can export any part of the registry as a .reg file to see what the format is.
Format here:
http://support.microsoft.com/kb/310516
This can be run on any Windows machine without installing other software.
answered Sep 24, 2008 at 21:54
Lou FrancoLou Franco
87.3k14 gold badges134 silver badges191 bronze badges
Yes. You can use reg.exe which comes with the OS to add, delete or query registry values. Reg.exe does not have an explicit modify command, but you can do it by doing delete and then add.
answered Sep 24, 2008 at 21:56
Franci PenovFranci Penov
74.2k16 gold badges129 silver badges165 bronze badges
In addition to reg.exe, I highly recommend that you also check out powershell, its vastly more capable in its registry handling.
answered Sep 24, 2008 at 22:23
Tim JarvisTim Jarvis
18.2k9 gold badges54 silver badges91 bronze badges
1
answered Sep 24, 2008 at 21:54
0

| Warning: | Before tweaking the registry, make sure you have a full backup of your system. If anything goes wrong, you may end up losing all your data and reinstalling Windows. As Microsoft states it, editing the registry «… is not supported by Microsoft. Use this method at your own risk.» |
Read Microsoft’s Knowledge Base article Q318149 to learn How to Maintain Current Registry Backups in Windows NT 4.0 and Windows 2000.
General Syntax:
| GUI mode: | REGEDIT.EXE | |
| Import (merge) a .REG file: | REGEDIT.EXE [ /L:system | /R:user ] [ /S ] importfile.REG | |
| Export to a (.REG) file: | REGEDIT.EXE [ /L:system | /R:user ] /E exportfile.REG «registry_key« | |
| Compress the registry (Windows 98 only): | REGEDIT.EXE [ /L:system | /R:user ] /C |
| Parameters: | ||
| importfile.REG | .REG file to be imported (or «merged») | |
| exportfile.REG | File name the information should be written to | |
| «registry_key« | Registry key to be exported, e.g. «HKEY_CLASSES_ROOT*shell» | |
| /S | Silent, i.e. hide confirmation box when importing files | |
| /E | Export registry file | |
| /L:system | Specify the location of the system.dat to use | |
| /R:user | Specify the location of the user.dat to use | |
| /C | Compress [filename] (Windows 98 only) |
REGEDIT is usually known as a GUI tool to search or edit the Windows registry.
I would not have mentioned it here, however, if it couldn’t be used in unattended mode as well.
This page focuses on reading and editing the registry in unattended mode only.
Microsoft’s NT 4 Workstation and Server Resource Kits come with REG.EXE, a utility that makes reading (or editing) NT’s registry easier.
In Windows 2000, REG.EXE is available on the installation CD-ROM, but has to be installed manually (on the CD-ROM run «SUPPORTTOOLSSETUP.EXE»).
As of Windows XP, REG.EXE is a native command.
REG.EXE can read a single key and value directly, without the need for a temporary file.
Learn more about using REG.EXE.
Adding and editing (importing) registry entries
Adding items to the registry requires a *.REG file:
REGEDIT [ /S ] addsome.REG
The /S switch is optional, it skips the message dialogs before and after the import of the *.REG file.
Since NT 4 .REG files are in readable ASCII, they may be created «on the fly» by our batch files.
This is demonstrated in the DefOpen example in the Examples section.
Removing registry entries
To remove an entire «tree» from the registry using REGEDIT and a .REG file, just add a minus sign before the tree name:
REGEDIT4 [-HKEY_CURRENT_USERDummyTree]
will remove the entire tree «DummyTree».
To remove an individual item from the registry, place the minus sign after the equal sign:
REGEDIT4 [HKEY_CURRENT_USERDummyTree] "ValueToBeRemoved"=-
will remove the individual value «ValueToBeRemoved» from «DummyTree».
This is demonstrated in the UniqueID.bat example below, a batch file that forces a new LANDesk agent ID.
How to remove an individual registry key or value using *.INF files and RUNDLL is explained by Bill James.
Reading (exporting) from the registry
REGEDIT’s /E switch can be used to export a registry key:
REGEDIT /E d:pathfilename.REG "HKEY_XXXXWhatever Key"
This will write the registry key «HKEY_XXXXWhatever Key» and its subkeys to a file named d:pathfilename.REG
The resulting (ASCII or UniCode) file will contain the entries in the format "key"="value", which can be stripped and parsed using Laurence Soucy’s CHOICE trick for MS-DOS 6 and Windows 9*, NT’s FOR /F or the more generic TYPE and FIND commands.
Instead of a file name, some device names can be used:
REGEDIT /E PRN "HKEY_XXXXWhatever Key"
will print the selected key.
Unfortunately, this won’t work for CON (console or display).
On most «modern» Windows installations, the PRN device is no longer available, as it requires an LPT or COM port.
Self-contained registry scripts
In .REG files, every line after the first one that starts with a semicolon (;) is treated as comment.
Batch files completely ignore the semicolons before commands.
So the following batch file will use itself as a .REG file:
REGEDIT4 ; @ECHO OFF ; CLS ; REGEDIT.EXE /S "%~f0" ; EXIT [HKEY_CURRENT_USERSoftwareTest] "TestVal"="Succeeded"
The REGEDIT4 line is required, and must be the first line, otherwise REGEDIT.EXE won’t accept the script as a valid .REG file.
However, it will generate an error message when running as a batch file, hence the CLS command to wipe the error message from the screen.
To prevent more error messages, EXIT is used to abort the batch file immediately after the REGEDIT.EXE command.
Use this technique to add or remove registry keys and values.
Examples
Most examples are for Windows 2000 and earlier Windows versions.
The reason is that as of Windows XP, REG.EXE is a native tool, which does not require temporary files.
- CDROM.bat
A fine example of reading the registry in Windows 95/98, also a demonstration of the use of CHOICE to strip characters (in this case the quotes) from a string. - DefOpen.bat
Create a default file association to Notepad and add «Open with Notepad», «Print with Notepad» and «Command Prompt Here» options to Explorer’s context menu (Windows 2000). - UniqueID.bat
Deletes a file and a registry entry to force Intel LANDesk agent software to create a new unique ID.
Run it once on any PC containing Intel’s LANDesk agent software that was installed using any «disk cloning» technique (like Norton Ghost, PowerQuest’s Drive Image, or tape backups).
Probably showing its age a little, by now; not tested on recent LANDesk versions. - Country3.bat
Read the country/international settings from the (NT 4) registry. - GetRes.bat
Read the screen resolution from the registry in Windows NT 4 and 2000.
- More examples, dealing with printing various file types.
- A list of all possible iCountry values.
- A great tool to create VBScript scripts that can modify the registry is the Tweakomatic by the Scripting Guys.
- An overview of Registry Entries for Printing.
page last modified: 2019-08-18
Редактирование реестра Windows из командной строки, bat-файлы
На нашем ресурсе уже есть публикация, описывающая основной способ работы с системным реестром Windows : Изменение параметров cистемного реестра Windows. Также мы рассматривали способ автоматизации процесса при помощи специальных файлов: Создание reg-файлов. Синтаксис редактирования записей реестра — позволяющий значительно упростить монотонную работу и воспроизведение часто используемых настроек. В рамках данной статьи мы затронем логическое продолжение темы, а именно, поговорим о том, как редактировать реестр из командной строки.
Содержание статьи:
Использование bat-файлов для редактирования реестра
Точнее сказать, мы, разумеется, не будем раз за разом вручную прописывать нужные параметры в окне консоли, не для этого данный способ нужен, мы рассмотрим вариант внесения изменений в системный реестр Windows при помощи bat-файлов.
Достаточно подробно о создании и использовании батников речь шла в записи Пакетные файлы (bat, батники) Windows, ещё одна функция, которую можно и нужно использовать — изменение записей реестра при помощи cmd языка .
Использование батников для редактирования реестра иногда может быть выгоднее и удобнее, нежели работа со стандартными для этих целей reg-файлами.
- батники шире используются в администрировании;
- батники имеют режим тихого запуска (без всплывающих окон);
- батники можно запускать с повышенными правами, то есть от имени Администратора;
- с помощью бат-файлов возможна работа с реестром сетевых машин.
Именно для таких частных случаев будет полезно знать, как написать батник для редактирования системного реестра Windows.
Работа с реестром из командной строки
Синтаксис бат-файлов и процесс их создания описан в статье, приведённой выше, в данной же публикации затронем исключительно тему, касающуюся выполнения функции изменения реестра из командной строки.
Сразу отметим, что в bat-файлах не требуется заголовок в начале файла по типу того, что используется в reg-файлах: Windows Registry Editor Version 5.00 — здесь можно начинать писать команду с первой же строки.
Для начала приведём основные параметры, используемые при работе с реестром из командной строки:
- /v — имя добавляемого/изменяемого ключа;
- /ve — добавление пустого параметра;
- /t — параметр для указания типа добавляемых/изменяемых данных;
- /d — значение, присваиваемое параметру;
- /s — применение команды ко всем вложенным ключам;
- /f — отключение системных предупреждений при выполнении операции.
Но, конечно, основа любого батника Windows — сама команда. Итак, приведём список команд, используемых для редактирования реестра .
reg add — команда для добавления данных, будь то параметры, ключи или целые ветки.
Допустим, после вирусной атаки нам необходимо вернуть место хранения hosts файла (а также файлов lmhosts, networks и protocols) в директорию %SystemRoot%System32driversetc Для этого нужно выполнить команду:
Если немного применить фантазию и оформить батник, то код будет выглядеть примерно следующим образом:
Вот такой файл, как в архиве, у нас получится: drivers_etc
Остальные примеры в данной статье будем приводить вымышленные, дабы при их тестировании не вносить нежелательных изменений в реестр
reg delete — команда для удаления указанной информации из реестра компьютера.
Чтобы удалить определённый параметр, нам достаточно указать его полный путь после команды удаления. Пример:
Данная команда удалит параметр Save из указанной ветки.
reg copy — команда для копирования параметров и ключей из одной ветки реестра в другую.
Для копирования параметров достаточно после команды последовательно прописать сначала исходную ветку, а потом изменяемую. Например:
Данная команда скопирует всю информацию из ветки User1 в ветку User2.
reg export — команда для экспорта указанных веток реестра в виде *.reg файла на жёсткий диск.
Пример использования:
В результате выполнения данной команды будет создан рег-файл с бэкапом раздела Football.
reg import — команда, позволяющая импортировать данные из reg-файла в реестр системы.
Пример использования:
В результате выполнения данной команды записи из рег-файла будут импортированы в реестр.
reg query — данная команда возвращает значение запрашиваемых параметров и кустов реестра.
Пример использования:
В ответ будет возвращено значение параметра Run в реестре.
reg compare — команда позволяет сравнить две указанные последовательно ветки реестра.
Пример использования:
В ответ команда возвращает одно из значений: 0 — данные веток идентичны; 1 — при выполнении операции произошла ошибка; 2 — данные веток отличаются.
reg load , reg unload , reg save , reg restore — команды, позволяющие бэкапить и восстанавливать нужные ветки системного реестра Windows при помощи файлов *.hiv.
Изменение параметров реестра компьютера в сети
Выше мы рассмотрели достаточно широкие возможности батников в работе с реестром операционной системы. Последний момент, который отметим в контексте данной темы — это редактирование реестра компьютеров в локальной сети.
Для использования в работе с компьютерами в сети доступны все вышеперечисленные команды, единственное ограничение — операции из командной строки над реестром удалённых машин возможно производить только в разделах HKEY_ LOCAL_MACHINE (HKLM), и HKEY_USERS (HKU)

При этом, в командах, обрабатывающих сразу несколько разделов (например, копирование из одного раздела в другой, сравнение веток), одна из веток может располагаться на локальном компьютере, а другая на компьютере в сети.
То есть, для копирования ветки с удалённой машины на наш компьютер необходимо выполнить следующую команду:
Указанная команда скопирует содержимое раздела User с компьютера FRIEND в локальной сети в реестр машины, с которой выполняется команда.
На этом заключительную статью описания общих принципов работы с реестром компьютера и с bat-файлами можно считать завершённой.
Безошибочных вам команд и корректных ключей реестра.
reg add
С этой операцией нельзя добавлять поддеревья. Эта версия reg не запрашивает подтверждение при добавлении подраздела.
Возвращаемые значения для операции reg Add :
- Для REG_EXPAND_SZ типа ключа используйте символ крышки ( ) с % параметром/d.
Примеры
Чтобы добавить ключ хклмсофтваремико на удаленном компьютере ABC, введите:
Чтобы добавить запись реестра в хклмсофтваремико со значением с именем Data, REG_BINARYтипа и данными fe340ead, введите:
Чтобы добавить многозначную запись реестра в хклмсофтваремико со значением MRU, Type REG_MULTI_SZи Data of faxmail, введите:
Чтобы добавить развернутую запись реестра в хклмсофтваремико со значением path, REG_EXPAND_SZтипа и данными % systemroot%, введите:
Добавление и удаление разделов реестра
Реестр позволяет более тонко настроить ОС Windows — добавить или отключить в ней какие-либо функции — к примеру, настроить режимы доступа к открытым для сетевого доступа ресурсам или повысить производительность операционной системы и многое другое.
В этом совете мы рассмотрим 2 способа добавления и удаления разделов реестра.
Добавление разделов реестра.
Добавить раздел в реестр можно при помощи Редактора реестра (в графическом режиме). Это можно выполнить следующим образом:
- Откройте Редактор реестра (Как запустить Редактор реестра).
- Перейдите в необходимую ветвь реестра Windows. Нажмите на названии раздела, в котором вы хотите создать свой новый раздел, правой клавишей мыши и выберите в появившемся меню Создать ->Раздел.
- В результате этого действия появится новый раздел (обычно с именем «Новый раздел #1»). Нажав на нем правой клавишей мыши и выбрав в меню «Переименовать» (или просто нажав на клавишу F2), вы сможете дать разделу необходимое имя:
Также добавить раздел в реестр Windows можно используя командную строку.
К примеру, добавим в реестр новый раздел с именем Mynewkey в существующий раздел HKEY_LOCAL_MACHINESoftware:
reg add ComputerNameHKLMSoftwareMynewkey
где вместо «ComputerName» укажите имя своего компьютера (его можно узнать нажав правой кнопкой мыши на «Мой компьютер» и выбрав пункт меню «Свойства» и далее вкладку «Имя компьютера»).
В случае удачного выполнения на экране появится надпись — «Операция успешно завершена».
Для удаления раздела из реестра Windows необходимо выполнить следующие действия:
В графическом режиме:
- Войти в Редактор реестра («Пуск» -> «Выполнить» наберите regedit и нажмите «ОК»).
- Выбрать правой кнопкой мыши удаляемый раздел и нажать на пункте «Удалить».
В режиме командной строки выполнить команду: reg delete ComputerNameHKLMSoftwareMynewkey
Появится предупреждение о удалении раздела из реестра Windows и предложение ввести Y («да») или N («нет»).
Для того, чтобы предупреждение не появлялось, используйте ключ /f.
Is it possible to modify a registry value (whether string or DWORD) via a .bat/.cmd script?
Ross Ridge
37.8k7 gold badges79 silver badges111 bronze badges
asked Sep 24, 2008 at 21:52
Brian R. BondyBrian R. Bondy
335k122 gold badges589 silver badges634 bronze badges
1
@Franci Penov — modify is possible in the sense of overwrite with /f, eg
reg add "HKCUSoftwareetcetc" /f /v "value" /t REG_SZ /d "Yes"
Mark Mayo
11.9k12 gold badges54 silver badges84 bronze badges
answered Oct 4, 2008 at 13:26
2
You can use the REG command. From http://www.ss64.com/nt/reg.html:
Syntax:
REG QUERY [ROOT]RegKey /v ValueName [/s]
REG QUERY [ROOT]RegKey /ve --This returns the (default) value
REG ADD [ROOT]RegKey /v ValueName [/t DataType] [/S Separator] [/d Data] [/f]
REG ADD [ROOT]RegKey /ve [/d Data] [/f] -- Set the (default) value
REG DELETE [ROOT]RegKey /v ValueName [/f]
REG DELETE [ROOT]RegKey /ve [/f] -- Remove the (default) value
REG DELETE [ROOT]RegKey /va [/f] -- Delete all values under this key
REG COPY [\SourceMachine][ROOT]RegKey [\DestMachine][ROOT]RegKey
REG EXPORT [ROOT]RegKey FileName.reg
REG IMPORT FileName.reg
REG SAVE [ROOT]RegKey FileName.hiv
REG RESTORE \MachineName[ROOT]KeyName FileName.hiv
REG LOAD FileName KeyName
REG UNLOAD KeyName
REG COMPARE [ROOT]RegKey [ROOT]RegKey [/v ValueName] [Output] [/s]
REG COMPARE [ROOT]RegKey [ROOT]RegKey [/ve] [Output] [/s]
Key:
ROOT :
HKLM = HKey_Local_machine (default)
HKCU = HKey_current_user
HKU = HKey_users
HKCR = HKey_classes_root
ValueName : The value, under the selected RegKey, to edit.
(default is all keys and values)
/d Data : The actual data to store as a "String", integer etc
/f : Force an update without prompting "Value exists, overwrite Y/N"
\Machine : Name of remote machine - omitting defaults to current machine.
Only HKLM and HKU are available on remote machines.
FileName : The filename to save or restore a registry hive.
KeyName : A key name to load a hive file into. (Creating a new key)
/S : Query all subkeys and values.
/S Separator : Character to use as the separator in REG_MULTI_SZ values
the default is ""
/t DataType : REG_SZ (default) | REG_DWORD | REG_EXPAND_SZ | REG_MULTI_SZ
Output : /od (only differences) /os (only matches) /oa (all) /on (no output)
Dave Jarvis
29.9k39 gold badges177 silver badges310 bronze badges
answered Sep 24, 2008 at 21:54
Rui VieiraRui Vieira
5,2235 gold badges42 silver badges55 bronze badges
1
Yes, you can script using the reg command.
Example:
reg add HKCUSoftwareSomeProduct
reg add HKCUSoftwareSomeProduct /v Version /t REG_SZ /d v2.4.6
This would create key HKEY_CURRENT_USERSoftwareSomeProduct, and add a String value «v2.4.6» named «Version» to that key.
reg /? has the details.
answered Sep 24, 2008 at 21:54
Factor MysticFactor Mystic
26k16 gold badges83 silver badges95 bronze badges
This is how you can modify registry, without yes or no prompt and don’t forget to run as administrator
reg add HKEY_CURRENT_USERSoftwareMicrosoftWindowsShelletcetc /v Valuename /t REG_SZ /d valuedata /f
Below is a real example to set internet explorer as my default browser
reg add HKEY_CURRENT_USERSoftwareMicrosoftWindowsShellAssociationsUrlAssociationshttpsUserChoice /v ProgId /t REG_SZ /d IE.HTTPS /f
/f Force: Force an update without prompting «Value exists, overwrite
Y/N»/d Data : The actual data to store as a «String», integer etc
/v Value : The value name eg ProgId
/t DataType : REG_SZ (default) | REG_DWORD | REG_EXPAND_SZ |
REG_MULTI_SZ
Learn more about Read, Set or Delete registry keys and values, save and restore from a .REG file. from here
answered May 29, 2016 at 15:41
Shersha FnShersha Fn
1,4313 gold badges25 silver badges34 bronze badges
1
You can make a .reg file and call start on it. You can export any part of the registry as a .reg file to see what the format is.
Format here:
http://support.microsoft.com/kb/310516
This can be run on any Windows machine without installing other software.
answered Sep 24, 2008 at 21:54
Lou FrancoLou Franco
87.3k14 gold badges134 silver badges191 bronze badges
Yes. You can use reg.exe which comes with the OS to add, delete or query registry values. Reg.exe does not have an explicit modify command, but you can do it by doing delete and then add.
answered Sep 24, 2008 at 21:56
Franci PenovFranci Penov
74.2k16 gold badges129 silver badges165 bronze badges
In addition to reg.exe, I highly recommend that you also check out powershell, its vastly more capable in its registry handling.
answered Sep 24, 2008 at 22:23
Tim JarvisTim Jarvis
18.2k9 gold badges54 silver badges91 bronze badges
1
answered Sep 24, 2008 at 21:54
0
Is it possible to modify a registry value (whether string or DWORD) via a .bat/.cmd script?
Ross Ridge
37.8k7 gold badges79 silver badges111 bronze badges
asked Sep 24, 2008 at 21:52
Brian R. BondyBrian R. Bondy
335k122 gold badges589 silver badges634 bronze badges
1
@Franci Penov — modify is possible in the sense of overwrite with /f, eg
reg add "HKCUSoftwareetcetc" /f /v "value" /t REG_SZ /d "Yes"
Mark Mayo
11.9k12 gold badges54 silver badges84 bronze badges
answered Oct 4, 2008 at 13:26
2
You can use the REG command. From http://www.ss64.com/nt/reg.html:
Syntax:
REG QUERY [ROOT]RegKey /v ValueName [/s]
REG QUERY [ROOT]RegKey /ve --This returns the (default) value
REG ADD [ROOT]RegKey /v ValueName [/t DataType] [/S Separator] [/d Data] [/f]
REG ADD [ROOT]RegKey /ve [/d Data] [/f] -- Set the (default) value
REG DELETE [ROOT]RegKey /v ValueName [/f]
REG DELETE [ROOT]RegKey /ve [/f] -- Remove the (default) value
REG DELETE [ROOT]RegKey /va [/f] -- Delete all values under this key
REG COPY [\SourceMachine][ROOT]RegKey [\DestMachine][ROOT]RegKey
REG EXPORT [ROOT]RegKey FileName.reg
REG IMPORT FileName.reg
REG SAVE [ROOT]RegKey FileName.hiv
REG RESTORE \MachineName[ROOT]KeyName FileName.hiv
REG LOAD FileName KeyName
REG UNLOAD KeyName
REG COMPARE [ROOT]RegKey [ROOT]RegKey [/v ValueName] [Output] [/s]
REG COMPARE [ROOT]RegKey [ROOT]RegKey [/ve] [Output] [/s]
Key:
ROOT :
HKLM = HKey_Local_machine (default)
HKCU = HKey_current_user
HKU = HKey_users
HKCR = HKey_classes_root
ValueName : The value, under the selected RegKey, to edit.
(default is all keys and values)
/d Data : The actual data to store as a "String", integer etc
/f : Force an update without prompting "Value exists, overwrite Y/N"
\Machine : Name of remote machine - omitting defaults to current machine.
Only HKLM and HKU are available on remote machines.
FileName : The filename to save or restore a registry hive.
KeyName : A key name to load a hive file into. (Creating a new key)
/S : Query all subkeys and values.
/S Separator : Character to use as the separator in REG_MULTI_SZ values
the default is ""
/t DataType : REG_SZ (default) | REG_DWORD | REG_EXPAND_SZ | REG_MULTI_SZ
Output : /od (only differences) /os (only matches) /oa (all) /on (no output)
Dave Jarvis
29.9k39 gold badges177 silver badges310 bronze badges
answered Sep 24, 2008 at 21:54
Rui VieiraRui Vieira
5,2235 gold badges42 silver badges55 bronze badges
1
Yes, you can script using the reg command.
Example:
reg add HKCUSoftwareSomeProduct
reg add HKCUSoftwareSomeProduct /v Version /t REG_SZ /d v2.4.6
This would create key HKEY_CURRENT_USERSoftwareSomeProduct, and add a String value «v2.4.6» named «Version» to that key.
reg /? has the details.
answered Sep 24, 2008 at 21:54
Factor MysticFactor Mystic
26k16 gold badges83 silver badges95 bronze badges
This is how you can modify registry, without yes or no prompt and don’t forget to run as administrator
reg add HKEY_CURRENT_USERSoftwareMicrosoftWindowsShelletcetc /v Valuename /t REG_SZ /d valuedata /f
Below is a real example to set internet explorer as my default browser
reg add HKEY_CURRENT_USERSoftwareMicrosoftWindowsShellAssociationsUrlAssociationshttpsUserChoice /v ProgId /t REG_SZ /d IE.HTTPS /f
/f Force: Force an update without prompting «Value exists, overwrite
Y/N»/d Data : The actual data to store as a «String», integer etc
/v Value : The value name eg ProgId
/t DataType : REG_SZ (default) | REG_DWORD | REG_EXPAND_SZ |
REG_MULTI_SZ
Learn more about Read, Set or Delete registry keys and values, save and restore from a .REG file. from here
answered May 29, 2016 at 15:41
Shersha FnShersha Fn
1,4313 gold badges25 silver badges34 bronze badges
1
You can make a .reg file and call start on it. You can export any part of the registry as a .reg file to see what the format is.
Format here:
http://support.microsoft.com/kb/310516
This can be run on any Windows machine without installing other software.
answered Sep 24, 2008 at 21:54
Lou FrancoLou Franco
87.3k14 gold badges134 silver badges191 bronze badges
Yes. You can use reg.exe which comes with the OS to add, delete or query registry values. Reg.exe does not have an explicit modify command, but you can do it by doing delete and then add.
answered Sep 24, 2008 at 21:56
Franci PenovFranci Penov
74.2k16 gold badges129 silver badges165 bronze badges
In addition to reg.exe, I highly recommend that you also check out powershell, its vastly more capable in its registry handling.
answered Sep 24, 2008 at 22:23
Tim JarvisTim Jarvis
18.2k9 gold badges54 silver badges91 bronze badges
1
answered Sep 24, 2008 at 21:54
0






Также добавить раздел в реестр Windows можно используя командную строку.