Как изменить реестр через bat файл

Ответ на вопрос, как редактировать реестр через командную строку. Изменение ключей реестра батником. Список команд консоли cmd для добавления параметров реестра, их удаления, копирования, экспорта и для прочих операций.

Редактирование реестра батниками

На нашем ресурсе уже есть публикация, описывающая основной способ работы с системным реестром WindowsИзменение параметров cистемного реестра Windows. Также мы рассматривали способ автоматизации процесса при помощи специальных файлов: Создание reg-файлов. Синтаксис редактирования записей реестра — позволяющий значительно упростить монотонную работу и воспроизведение часто используемых настроек. В рамках данной статьи мы затронем логическое продолжение темы, а именно, поговорим о том, как редактировать реестр из командной строки.

Содержание статьи:

Точнее сказать, мы, разумеется, не будем раз за разом вручную прописывать нужные параметры в окне консоли, не для этого данный способ нужен, мы рассмотрим вариант внесения изменений в системный реестр Windows при помощи bat-файлов.

Достаточно подробно о создании и использовании батников речь шла в записи Пакетные файлы (bat, батники) Windows, ещё одна функция, которую можно и нужно использовать — изменение записей реестра при помощи cmd языка.
Использование батников для редактирования реестра иногда может быть выгоднее и удобнее, нежели работа со стандартными для этих целей reg-файлами.

  1. батники шире используются в администрировании;
  2. батники имеют режим тихого запуска (без всплывающих окон);
  3. батники можно запускать с повышенными правами, то есть от имени Администратора;
  4. с помощью бат-файлов возможна работа с реестром сетевых машин.

Именно для таких частных случаев будет полезно знать, как написать батник для редактирования системного реестра 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 loadreg unload, reg savereg restore — команды, позволяющие бэкапить и восстанавливать нужные ветки системного реестра Windows при помощи файлов *.hiv.

Изменение параметров реестра компьютера в сети

Выше мы рассмотрели достаточно широкие возможности батников в работе с реестром операционной системы. Последний момент, который отметим в контексте данной темы — это редактирование реестра компьютеров в локальной сети.

Для использования в работе с компьютерами в сети доступны все вышеперечисленные команды, единственное ограничение — операции из командной строки над реестром удалённых машин возможно производить только в разделах HKEY_ LOCAL_MACHINE (HKLM), и HKEY_USERS (HKU)

bat-файлНу и главное: чтобы работать с реестром компьютера в сети, необходимо в применяемой команде перед разделом указать имя удалённой машины, начинающееся с двойного обратного слеша.
При этом, в командах, обрабатывающих сразу несколько разделов (например, копирование из одного раздела в другой, сравнение веток), одна из веток может располагаться на локальном компьютере, а другая на компьютере в сети.

То есть, для копирования ветки с удалённой машины на наш компьютер необходимо выполнить следующую команду:

reg copy \FRIENDHKLMSoftwareGamesFootballUser HKLMSoftwareGamesFootballUser /s

Указанная команда скопирует содержимое раздела User с компьютера FRIEND в локальной сети в реестр машины, с которой выполняется команда.

На этом заключительную статью описания общих принципов работы с реестром компьютера и с bat-файлами можно считать завершённой.
Безошибочных вам команд и корректных ключей реестра.

Profile picture for user Олег

Windows Terminal cmd

Нужно добавить запись в реестр с помощью 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

Реестр WindowsБывает так, что Вам нужно изменить некий параметр в реестре на компьютерах в сети. Естественно, чем больше у Вас компьютеров, тем утомительнее это делать вручную. В данном случае процесс можно автоматизировать созданием bat-файла, который и внесет все необходимые изменения на компьютеры сети. Далее этот файл можно распространить посредством групповых политик, специального ПО вроде Kaspersky Security Center или просто прописать в самом файле имена компьютеров и запустить со своей машины.

В общем виде команда reg add выглядит следующим образом:

reg add имя_раздела [/v имя_записи|/ve] [/t тип_данных] [/s разделитель] [/d значение] [/f]

Разберем её синтаксис подробнее. Для лучшего понимания взглянем на пример записи в реестре:

Reg Add или добавление новой записи в реестр Windows через bat-файл

Данная запись лежит в реестре по адресу 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.

Вот результат данной команды:

Reg Add или добавление новой записи в реестр Windows через bat-файл

Результат работы команды Reg Add

Вот, пожалуй, и всё, что нужно знать о добавлении записей в реестр через командную строку Windows. Помните, что редактирование реестра требует осторожности, но, в целом, он не так страшен, как его описывают. 🙂

Is it possible to modify a registry value (whether string or DWORD) via a .bat/.cmd script?

Ross Ridge's user avatar

Ross Ridge

37.8k7 gold badges79 silver badges111 bronze badges

asked Sep 24, 2008 at 21:52

Brian R. Bondy's user avatar

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's user avatar

Mark Mayo

11.9k12 gold badges54 silver badges84 bronze badges

answered Oct 4, 2008 at 13:26

nray's user avatar

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's user avatar

Dave Jarvis

29.9k39 gold badges177 silver badges310 bronze badges

answered Sep 24, 2008 at 21:54

Rui Vieira's user avatar

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 Mystic's user avatar

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 Fn's user avatar

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 Franco's user avatar

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 Penov's user avatar

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 Jarvis's user avatar

Tim JarvisTim Jarvis

18.2k9 gold badges54 silver badges91 bronze badges

1

answered Sep 24, 2008 at 21:54

schaelle's user avatar

0

Rob van der Woude's Scripting Pages

BE CAREFUL: This machine has no brain, use your own

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-файлами.

  1. батники шире используются в администрировании;
  2. батники имеют режим тихого запуска (без всплывающих окон);
  3. батники можно запускать с повышенными правами, то есть от имени Администратора;
  4. с помощью бат-файлов возможна работа с реестром сетевых машин.

Именно для таких частных случаев будет полезно знать, как написать батник для редактирования системного реестра 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)

bat-файлНу и главное: чтобы работать с реестром компьютера в сети, необходимо в применяемой команде перед разделом указать имя удалённой машины, начинающееся с двойного обратного слеша.
При этом, в командах, обрабатывающих сразу несколько разделов (например, копирование из одного раздела в другой, сравнение веток), одна из веток может располагаться на локальном компьютере, а другая на компьютере в сети.

То есть, для копирования ветки с удалённой машины на наш компьютер необходимо выполнить следующую команду:

Указанная команда скопирует содержимое раздела 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 способа добавления и удаления разделов реестра.

Добавление разделов реестра.

Добавить раздел в реестр можно при помощи Редактора реестра (в графическом режиме). Это можно выполнить следующим образом:

  1. Откройте Редактор реестра (Как запустить Редактор реестра).
  2. Перейдите в необходимую ветвь реестра Windows. Нажмите на названии раздела, в котором вы хотите создать свой новый раздел, правой клавишей мыши и выберите в появившемся меню Создать ->Раздел.Добавление и удаление разделов реестра
  3. В результате этого действия появится новый раздел (обычно с именем «Новый раздел #1»). Нажав на нем правой клавишей мыши и выбрав в меню «Переименовать» (или просто нажав на клавишу F2), вы сможете дать разделу необходимое имя: Добавление и удаление разделов реестраТакже добавить раздел в реестр Windows можно используя командную строку.

К примеру, добавим в реестр новый раздел с именем Mynewkey в существующий раздел HKEY_LOCAL_MACHINESoftware:

reg add ComputerNameHKLMSoftwareMynewkey

где вместо «ComputerName» укажите имя своего компьютера (его можно узнать нажав правой кнопкой мыши на «Мой компьютер» и выбрав пункт меню «Свойства» и далее вкладку «Имя компьютера»).

В случае удачного выполнения на экране появится надпись — «Операция успешно завершена».

Для удаления раздела из реестра Windows необходимо выполнить следующие действия:

В графическом режиме:

  1. Войти в Редактор реестра («Пуск» -> «Выполнить» наберите regedit и нажмите «ОК»).
  2. Выбрать правой кнопкой мыши удаляемый раздел и нажать на пункте «Удалить».
    В режиме командной строки выполнить команду: 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's user avatar

Ross Ridge

37.8k7 gold badges79 silver badges111 bronze badges

asked Sep 24, 2008 at 21:52

Brian R. Bondy's user avatar

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's user avatar

Mark Mayo

11.9k12 gold badges54 silver badges84 bronze badges

answered Oct 4, 2008 at 13:26

nray's user avatar

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's user avatar

Dave Jarvis

29.9k39 gold badges177 silver badges310 bronze badges

answered Sep 24, 2008 at 21:54

Rui Vieira's user avatar

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 Mystic's user avatar

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 Fn's user avatar

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 Franco's user avatar

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 Penov's user avatar

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 Jarvis's user avatar

Tim JarvisTim Jarvis

18.2k9 gold badges54 silver badges91 bronze badges

1

answered Sep 24, 2008 at 21:54

schaelle's user avatar

0

Is it possible to modify a registry value (whether string or DWORD) via a .bat/.cmd script?

Ross Ridge's user avatar

Ross Ridge

37.8k7 gold badges79 silver badges111 bronze badges

asked Sep 24, 2008 at 21:52

Brian R. Bondy's user avatar

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's user avatar

Mark Mayo

11.9k12 gold badges54 silver badges84 bronze badges

answered Oct 4, 2008 at 13:26

nray's user avatar

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's user avatar

Dave Jarvis

29.9k39 gold badges177 silver badges310 bronze badges

answered Sep 24, 2008 at 21:54

Rui Vieira's user avatar

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 Mystic's user avatar

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 Fn's user avatar

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 Franco's user avatar

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 Penov's user avatar

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 Jarvis's user avatar

Tim JarvisTim Jarvis

18.2k9 gold badges54 silver badges91 bronze badges

1

answered Sep 24, 2008 at 21:54

schaelle's user avatar

0

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить реестр другого пользователя
  • Как изменить реестр для конкретного пользователя
  • Как изменить редирект
  • Как изменить редакцию устава ооо
  • Как изменить редакцию вин 10

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии