如何使用批处理文件将REG_BINARY值解析为注册表项?

DP9*_*P99 8 registry scripting

这是一个(只是)例子:

reg add HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics/v MessageFont/t REG_BINARY/d"hex:f5,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00 ,00,90,01,00,00,\ 00,00,00,01,00,00,00,00,54,00,61,00,68,00,6f,00,6d,00,61, 00,00,00,00,00,00,\ 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 ,00,00,00,00,00,00,\ 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, 00,00,00,00"/ f

它不起作用.

提前谢谢了.

(顺便说一句,这里应该使用哪些代码标签?)

编辑:抱歉延迟(我几天没有回复,所以我谷歌搜索并试图自己找到解决方案)并感谢您的回复.

我通过删除"十六进制"和逗号解决了这个问题.二进制值应添加为长行的数字字符,不带空格和逗号.

现在我有另一个问题.如何使用reg命令仅更改条目的值?例如,我应该将'Default'注册表项的值从某个值更改为'value not set',反之亦然.如果我使用'reg add'命令,它会添加另一个具有相同名称的条目,而不是更改现有条目的值.我不能使用'删除旧的并添加新的'技术,因为无法删除"默认"条目.

我需要通过批处理文件而不是reg文件来做到这一点.(但无论如何,知道如何通过reg文件来完成它会很好)

非常感谢

EDIT2:删除默认条目值的解决方案:reg delete HKLM ...\Key/ve/f

要修改条目值,应使用regini. http://support.microsoft.com/kb/264584 (此页面中的解释有点模糊甚至可能不准确)放入批处理文件中:regini c:\ testregini.txt其中testregini.txt包含:HKEY_LOCAL_MACHINE ...\Key EntryXY = somevalue(或"未设置值",或任何该数据类型)

Ger*_*erd 7

就那么简单:

reg添加"HKCU\Control Panel\Desktop\WindowMetrics"/ v MessageFont/t REG_BINARY/d f5ffffff00000000000000000000000000001000000000001000000005400610068006f006d00610000000000000000000000000000000000000000000000000000000000000000000000/f

  1. 您可以将HKEY_Current_User缩写为HKCU.
  2. 将注册表项放在引号中以避免由于其中的反斜杠而解析错误.
  3. 对于数据,您必须删除引号,"hex:"前缀,逗号和换行符(反斜杠),以便只保留数字.

而已!我只是想知道为什么以前没有人对此感兴趣.


bre*_*ers 2

我不确定如何在常规批处理文件中执行此操作,但以下是使用 PowerShell 执行此操作的方法,并使用为 ASP.NET 状态服务设置失败操作的示例:

假设您的值的导出如下所示:

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\aspnet_state]
"FailureActions"=hex:50,33,01,00,00,00,00,00,00,00,00,00,03,00,00,00,0e,00,00,\
  00,01,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00
Run Code Online (Sandbox Code Playgroud)

您将十六进制值放入字节数组中,然后使用该值来设置注册表值:

$failureActionsValue = ([byte[]](80,51,01,00,00,00,00,00,00,00,00,00,03,00,00,00,14,00,00,00,01,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00))

Set-ItemProperty -Path 'HKLM:\System\ControlSet001\services\aspnet_state' -Name "FailureActions"
    -Value $failureActionsValue
Run Code Online (Sandbox Code Playgroud)