Можно ли изменить запись реестра с помощью сценария .bat/.cmd?

Можно ли изменить значение реестра (будь то строка или DWORD) с помощью сценария .bat/.cmd?


person Brian R. Bondy    schedule 24.09.2008    source источник
comment
Как указывает @Shersha Fn, вы должны быть администратором, чтобы использовать REG.EXE. Есть ли способ сделать это как неадминистратор и избежать сообщения «Доступ запрещен»?   -  person Mark Longmire    schedule 15.03.2017


Ответы (8)


Вы можете использовать команду REG. Из 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 "\0" 

   /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)
person Rui Vieira    schedule 24.09.2008
comment
этот ответ очень расплывчатый, и хотя в нем перечислены все возможности (что приятно), он не дает четкого ответа на вопрос ОП, в отличие от ответа @nray - person Dany Khalife; 06.06.2013

@Franci Penov - изменение возможно возможно в смысле перезаписи с помощью /f, например

reg add "HKCU\Software\etc\etc" /f /v "value" /t REG_SZ /d "Yes"
person nray    schedule 04.10.2008
comment
+1 за /f Я написал пару скриптов для этого, но без /f это было так больно; требовал, чтобы я присутствовал при запуске скрипта, чтобы ввести y+[return] - person amyassin; 16.02.2012
comment
Спасибо. Это должен быть принятый ответ, поскольку он объясняет, как ИЗМЕНИТЬ существующий КЛЮЧ. - person Michael Butler; 17.06.2013

Да, вы можете написать скрипт с помощью команды reg. Пример:

reg add HKCU\Software\SomeProduct
reg add HKCU\Software\SomeProduct /v Version /t REG_SZ /d v2.4.6

Это создаст ключ HKEY_CURRENT_USER\Software\SomeProduct и добавит к этому ключу строковое значение "v2.4.6" с именем "Версия".

reg /? есть подробности.

person Factor Mystic    schedule 24.09.2008

Вот как вы можете изменить реестр без подсказки «да» или «нет» и не забудьте запустить от имени администратора.

reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\etc\etc   /v Valuename /t REG_SZ /d valuedata  /f 

Ниже приведен реальный пример установки Internet Explorer в качестве браузера по умолчанию.

reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice   /v ProgId /t REG_SZ /d IE.HTTPS  /f 

/f Force: Принудительное обновление без запроса «Значение существует, перезаписать Y/N»

/d Data: фактические данные для хранения в виде «строки», целого числа и т. д.

/v Значение: имя значения, например ProgId

/t Тип данных: REG_SZ (по умолчанию) | REG_DWORD | REG_EXPAND_SZ | REG_MULTI_SZ

Узнайте больше о чтении, установке или удалении ключей и значений реестра, сохранении и восстановлении из файла .REG. из здесь

person Shersha Fn    schedule 29.05.2016
comment
Спасибо за определения параметров! - person nanonerd; 17.01.2020

Вы можете создать файл .reg и запустить его. Вы можете экспортировать любую часть реестра в виде файла .reg, чтобы увидеть формат.

Формат здесь:

http://support.microsoft.com/kb/310516

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

person Lou Franco    schedule 24.09.2008

Да. Вы можете использовать reg.exe, который поставляется с ОС, для добавления, удаления или запроса значений реестра. Reg.exe не имеет явной команды изменения, но вы можете сделать это, выполнив удаление, а затем добавив.

person Franci Penov    schedule 24.09.2008

В дополнение к reg.exe я настоятельно рекомендую вам также проверить powershell, он гораздо более эффективен в работе с реестром.

person Tim Jarvis    schedule 24.09.2008
comment
Сценарии PowerShell должны быть сначала включены на клиентском компьютере с помощью Set-ExecutionPolicy. У меня есть пакетный скрипт, который изменяет реестр, чтобы установить политику выполнения RemoteSigned. Преимущество заключается в том, что пользователь может включать и запускать сценарии PowerShell без ввода каких-либо команд. Они могут просто дважды щелкнуть командный файл. - person M. Dudley; 12.04.2011