2013-06-14 09:06:20 +0000 2013-06-14 09:06:20 +0000
21
21

Как изменить данные существующего имени ключа реестра с помощью команды cmd?

Как изменить существующее значение ключа реестра с помощью команды cmd?

Существует множество опций и переключателей, звонков и свистков для команды Reg. Есть возможность запрашивать, добавлять и удалять ключи, подклавиши и имена значений. Но как изменить данные существующего имени значения? Вы полностью удаляете имя значения, а затем снова добавляете его и повторно вводите измененное значение/данные? Это кажется очень громоздким…

Меня не интересует какая-либо автоматизация сценариев/партий, по крайней мере, не сейчас, мне просто нужно простое редактирование реестра с помощью команды cmd Reg. Без необходимости уничтожать ключ, просто добавляя его через секунду с некоторыми дополнительными данными. Та же операция, что и в Regedit.

Вот вам пример, чтобы подстегнуть процесс мышления.

Key: HKEY_CURRENT_USER\Software\Citrix\Receiver
Value type: reg_sz
Value name: UpgradeDone
Value data: true

Теперь это просто отлично, но что, если я должен изменить значение данных с “true” на “false”. Так что вместо этого я получаю следующее:

Key: HKEY_CURRENT_USER\Software\Citrix\Receiver
Value type: reg_sz
Value name: UpgradeDone
Value data: false

Какие опции и синтаксис для этого есть в команде?….

Обновление:

Я только что понял, что приведенный выше пример, возможно, был просто слишком простым. …

В приведенном выше примере я могу просто сделать следующее:

reg delete HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone

reg add HKEY_CURRENT_USER\Software\Citrix\Receiver /v UpgradeDone /t Reg_Sz /d false

Я могу позволить себе полностью удалить значение, а затем добавить его снова, потому что данные, содержащиеся в нем, очень малы. Это просто строка вроде “true” или “false”. Это не слишком сложно воссоздать.

Вот пример жестче с большим количеством содержимого данных:

Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Value name: Path
Value type: Reg_Sz
Data: C:\Program Files (x86)\ImageMagick-6.8.5-Q16;C:\PROGRA~2\GTK2-R~1\bin;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Windows\System32\WindowsPowerShell\v1.0\;"C:\Program Files (x86)\WinHasher";C:\Program Files (x86)\Android\android-sdk\tools\;C:\Program Files (x86)\Android\android-sdk\platform-tools\;C:\Program Files (x86)\GTK2-Runtime\bin;C:\Program Files (x86)\MiKTeX 2.9\miktex\bin\;C:\Program Files (x86)\Common Files\Teleca Shared;C:\Program Files (x86)\Notepad++

Я хочу удалить только часть содержимого данных. В частности, я хочу удалить только последний путь поиска, C:\Program Files (x86)\Notepad++.

Как вы справляетесь с этим???…

……..

Ответы (2)

38
38
38
2013-06-14 09:27:30 +0000

Используйте REG ADD с параметром “/f” для принудительной перезаписи.

REG ADD /? объясняет параметры.

REG ADD KeyName [/v ValueName | /ve] [/t type] [/s Separator] [/d Data] [/f]

KeyName [\Machine\]FullKey

Machine Name of remote machine - omitting defaults to the current machine 
            Only HKLM and HKU are available on remote machines
FullKey ROOTKEY\SubKey ROOTKEY [HKLM | HKCU | HKCR | HKU | HKCC] SubKey 
            The full name of a registry key under the selected ROOTKEY
/v The value name, under the selected Key, to add
/ve adds an empty value name <no name> for the key
/t RegKey data types
            [ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN | REG_DWORD | 
              REG_BINARY | REG_DWORD_LITTLE_ENDIAN | REG_NONE | REG_EXPAND_SZ ]
            If omitted, REG_SZ is assumed
/s Specify one character that you use as the separator in your data 
            string for REG_MULTI_SZ. If omitted, use "```
reg add HKCU\Software\Citrix\Receiver /t REG_SZ /v UpgradeDone /d true /f
```" as the separator
/d The data to assign to the registry ValueName being added
/f Force overwriting the existing registry entry without prompt

Чтобы вставить новое значение или переключить строковое значение с “false” на “true”, используйте команду вида:

set append=XXXXXX
set key=HKCU\Software\myTest
set value=myValue
set oldVal=

for /F "skip=2 tokens=3" %%r in ('reg query %key% /v %value%') do set oldVal=%%r
echo previous=%oldVal%

set newVal=%oldVal%%append% 

reg add %key% /v %value% /d %newVal% /f

Пример, который читает существующее значение и добавляет некоторое значение перед его записью обратно:

&001

Note: Этот пример предполагает, что старое значение и новое значение не имеют пустых строк. В противном случае необходимо добавить кавычки и изменить параметр “tokens”. Дополнительная проверка ошибок пропущена для краткости. Однако, код манипулирования реестром all определённо должен делать адекватную проверку на ошибки.

2
2
2
2015-04-13 23:01:03 +0000

Вы также можете REG import foo.reg, в котором foo.reg является файлом, содержащим обычную информацию реестра, как вы экспортировали из regedit.exe.

В вашем примере это будет что-то вроде:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"Path"="C:\Program Files (x86)\ImageMagick-6.8.5-Q16;C:\PROGRA~2\GTK2-R~1\bin;C:\Program Files (x86)\AMD APP\bin\x86_64;C:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;C:\Windows\System32\WindowsPowerShell\v1.0\;"C:\Program Files (x86)\WinHasher";C:\Program Files (x86)\Android\android-sdk\tools\;C:\Program Files (x86)\Android\android-sdk\platform-tools\;C:\Program Files (x86)\GTK2-Runtime\bin;C:\Program Files (x86)\MiKTeX 2.9\miktex\bin\;C:\Program Files (x86)\Common Files\Teleca Shared;C:\Program Files (x86)\Notepad++"

Дополнительная информация доступна по адресу эта статья Microsoft Technet .