我一直在尝试使用reg add命令添加" REG_MULT_SZ"进入登记处。
示例1:
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" ^
/d "TEST_ENTRY1\0TEST_ENTRY2\0TEST_ENTRY3" /f /reg:64
示例2:
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" /s "\0" ^
/d "TEST_ENTRY1\0TEST_ENTRY2\0TEST_ENTRY3" /f /reg:64
示例1命令有效,因为该命令的默认分隔符确实是"\0"
,但是如果我尝试使用/s
命令(示例2)来设置分隔符,即使它是相等的默认分隔符,它不起作用。
我尝试使用... "\"
逃脱/s "\\\0"
字符...但没有成功。
有人知道如何将"\"
字符传递给REG ADD "REG_MULTI_SZ"
命令/s
吗?
致以最诚挚的问候,
埃俄利斯
答案 0 :(得分:1)
reg add /?
/s Specify one character that you use as the separator in your data
string for REG_MULTI_SZ. If omitted, use "\0" as the separator.
指定一个字符(例如€
),如下所示:
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" /s € ^
/d "TEST_ENTRY1€TEST_ENTRY2€TEST_ENTRY3" /f /reg:64
注意^
和新行仅用于提高可读性,应用单行
REG ADD "HKLM\SOFTWARE\TESTKEY" /v "TESTVALUE" /t "REG_MULTI_SZ" /s € /d "TEST_ENTRY1€TEST_ENTRY2€TEST_ENTRY3" /f /reg:64
重演:如果使用reg add ... /t REG_MULTI_SZ
/s
开关)然后:
\0
用于分隔多个数据实例; 0
(零)取代\
(反斜杠)字面意思。/s Ж
分隔符(其中Ж
是唯一的字符,即使已定义 /s 0
,仍然保留),然后:
Ж
用于分隔多个数据实例; Ж
字符。 示例:我无法记录有关逃避的说明:仅基于实验。示例:假设您应该使用带有_numbered文件夹的下一个方案创建REG_MULTI_SZ
注册表值:
test\01gen
test\02gen
test\03gen
然后需要覆盖默认分隔符。覆盖reg query
中的默认分隔符以及/se
开关(否则,输出可能会有点混乱):
d:\bat>set "_regKey=HKCU\Software\Test Key"
d:\bat>set "_regData=test\01gen€test\02gen€test\03gen"
d:\bat>REG ADD "%_regKey%" /v TESTVALUE /t REG_MULTI_SZ /s € /d "%_regData%" /f /reg:64
The operation completed successfully.
d:\bat>REG QUERY "%_regKey%" /v TESTVALUE
HKEY_CURRENT_USER\Software\Test Key
TESTVALUE REG_MULTI_SZ test\01gen\0test\02gen\0test\03gen
d:\bat>REG QUERY "%_regKey%" /v TESTVALUE /se @
HKEY_CURRENT_USER\Software\Test Key
TESTVALUE REG_MULTI_SZ test\01gen@test\02gen@test\03gen
d:\bat>
结语:一条棘手的回答路径 - 请参阅编辑历史记录(tl; dr)。