2015-04-04 75 views
1

我一直在尝试使用reg add命令向注册表添加“REG_MULT_SZ”条目。REG添加带有转义“”字符的“REG_MULTI_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

最好的问候,

埃俄利斯

回答

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)然后:
    • Ж是用来分离数据的多个实例;
    • 没有机会逃避这个分隔符的命运并在字面上使用Ж字符在数据中。

:仅基于实验:我不能逃脱记录我的解释。例如:想象你应该创建一个REG_MULTI_SZ注册表值与未来的场景与_numbered文件夹:

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\[email protected]\[email protected]\03gen 


d:\bat> 

尾声:一个棘手的路径来回答 - 见编辑历史(TL;博士)。

+0

非常感谢Josef先生!我必须用一个字来分隔答案。但是,如果我不使用'/ s'命令使用自定义分隔符,则reg函数默认为'\ 0',这是一个组合分隔符。它是如何完成的?这是一个reg函数内部操作,不能被用户复制?如果用户选择使用'\ n'作为分隔符,它可以完成? – Aeolis 2015-04-04 22:03:05