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

如何从cmd修改现有的注册表键值名的数据?

如何从cmd修改现有的注册表键值?

对于Reg命令来说,有很多选项和开关,铃铛和口哨。有查询、添加和删除密钥、子密钥和值名的选项。但是,你如何修改现有的值名的数据?你是否要完全删除值名,然后重新添加,再重新输入修改后的值/数据?这似乎很麻烦……

我对任何脚本/批处理自动化不感兴趣,至少现在不感兴趣,我只想通过cmd Reg命令进行简单的注册表编辑。不需要销毁一个密钥,只需稍后再添加一些额外的数据就可以了。

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

现在这个例子很好,但是如果我必须把值数据从 “true "改成 "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
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++

从cmd中做这个的选项和语法是什么?…………

更新:

我现在才意识到,上面的例子可能是太简单了。 ….

在上面的例子中,我只需要做下面的操作就可以了:

&001

我可以完全删除这个值,然后再加一次,因为里面的数据很小。它只是一个像 "true "或 "false "这样的字符串。这并不难重新创建。

这里有一个难的例子,多的数据内容:

&001

我只想删除部分数据内容。具体说来,我只想删除最后一个搜索路径,即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
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

要插入一个新值或将字符串值从 "false "切换到 "true",请使用这样的命令:

&001

例子读取一个现有的值,并在写回之前附加一些字符串:

&001

注意: ***这个例子假设旧值和新值没有空白。否则就必须加引号并改变 "tokens "参数。为了简明扼要,省略了额外的错误检查。但是,***所有的注册表操作代码肯定要做足够的错误检查。

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

你也可以REG import foo.reg,其中foo.reg是一个包含通常的注册表信息的文件,就像你从regedit.exe导出一样。