如何在 .REG 文件中指定 REG_EXPAND_SZ 条目?

MBr*_*ley 13 windows-registry windows-xp

我正在尝试使用批处理脚本和.reg文件来设置一些自定义服务。大多数密钥都设置正确,但我需要DependOnService为某些服务设置密钥,这通常是多字符串。是否可以从.reg文件中设置此密钥,还是需要手动输入?

Pat*_*hes 14

REG_MULTI_SZ.reg文件中的数据必须以十六进制编码。如果内容永远不会改变,您可以在您的注册表中使用数据创建一个虚拟项目,将其导出,然后根据您的需要进行调整。

如果它确实发生了变化,使用regWindows 附带的程序来添加它可能会容易得多。为此,请reg按以下格式调用:

Reg Add <KEY> /v <NAME> /t REG_MULTI_SZ /d <DATA> /s <SEPERATOR>
Run Code Online (Sandbox Code Playgroud)

分隔开关是可选的。如果不使用,要写入的字符串应由空字符 ( \0)的转义序列分隔。例如,要添加一个名为Flairto的项目,HKLM\SOFTWARE\WhizBang\Excite-O-Rama并使用字符串foo, bar,然后baz运行:

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo\0bar\0baz
Run Code Online (Sandbox Code Playgroud)

要使用逗号分隔数据,您可以运行:

Reg Add HKLM\SOFTWARE\WhizBang\Excite-O-Rama /v Flair /t REG_MULTI_SZ /d foo,bar,baz /s ,
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅 Microsoft Docs 以获取该Reg命令。

  • 很好的答案(使用带有“reg”命令的“.bat”文件而不是“.reg”文件),但是当问题是关于 REG_EXPAND_SZ 时,为什么它会谈论 REG_MULTI_SZ? (4认同)

小智 5

  • dword:=DWORD
  • hex(2):= 可扩展字符串
  • hex(7):= 多串

ADWORD是一个 32 位无符号整数(十进制范围:0- 4294967295),并且在注册表中, aDWORD始终以 开头0x,后面有 8 位数字0x。可以是十进制或十六进制格式;例如,1000可以写为0x000010000x000003e8

DWORDS只能使用数字0- 9。任何类型的字符串始终使用 ASCII,并且在 ACSII 中1000只能写为31,30,30,30. 对于字符串数据类型,ASCII 会在您不知情的情况下在后台工作,因为计算机只能识别 1 和 0。

对于可扩展字符串和多字符串数据类型,它们将您的条目保存为一系列十六进制格式的 ASCII 代码,并用逗号和十六进制零分隔;所以可扩展字符串1000将是hex(2):31,00,30,00,30,00,30,00

让我们转换%PROGRAMFILES%成可扩展字符串:

  1. 使用ASCII 到 Hex 转换工具%PROGRAMFILES%在文本框中输入 User Defined Output delimiter: %,选择 Convert,它会给出:
    %25%50%52%4F%47%52%41%4D%46%49%4C%45%53%25
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将该结果复制/粘贴到文本编辑器中:将第一个移动%到末尾,查找/替换全部%,00,并删除字符串末尾的逗号。你应该得到:
    25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00
    
    Run Code Online (Sandbox Code Playgroud)
  3. 最后:
    hex(2):25,00,50,00,52,00,4F,00,47,00,52,00,41,00,4D,00,46,00,49,00,4C,00,45,00,53,00,25,00
    
    Run Code Online (Sandbox Code Playgroud)

本课程包含对任何未加密的十六进制编码注册表项进行逆向工程所需的所有知识。

  • 为了避免链接失效,请在您的答案中发布所有相关信息。有关如何回答问题的更多信息,请参阅[答案] (2认同)