命令行注册表编辑


0

我似乎遇到了一个问题reg,我试图通过cmd添加一个命令。任何想法我如何解决这个语法错误,因为命令似乎错了...

reg add HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command /v command /t REG_MULTI_SZ /d xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde /p "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /e "%1"

我需要编辑command字符串并添加数据:

xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde /p "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /e "%1"

尝试运行时收到的实际错误消息是什么?
Ƭᴇcʜιᴇ0072015年

是什么让你相信语法错了?为什么不直接修改注册表,导出更改并运行导出的更改而不是执行可能包含语法问题的命令?
Ramhound 2015年

Answers:


2

我有什么想法可以解决这个语法错误?

您的(二进制?)字符串包含一个>字符(用于命令的输出重定向到文件)。

你有:

REG_MULTI_SZ /d xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ 

尝试使用"

REG_MULTI_SZ /d "xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ"

或逃避>^>

REG_MULTI_SZ /d xb'BV5!!!!!!!!!MKKSkEXCELFiles^>VijqBof(Y8'w!FId1gLQ 

此外,您的reg add ...命令看起来不正确。

您没有由两个空字符终止的null-teminated字符串数组。

这是正确的语法。

REG ADD [ROOT] RegKey / v ValueName [/ t DataType] [/ S Separator] [/ d Data] [/ f]

哪里:

/ S Separator:在REG_MULTI_SZ值中用作分隔符的字符,默认值为“\ 0”

REG_MULTI_SZ由以空字符结尾的以null结尾的字符串数组。

REG.exe

有关更多信息,请参阅https://stackoverflow.com/questions/8853911/reg-add-a-reg-multi-sz-multi-line-registry-value


语法:转义字符,分隔符和引号

逃避角色

^逃脱角色。

在命令符号之前添加转义字符允许将其视为普通文本。

管道或重定向任何这些字符时,您应该使用转义字符作为前缀:&\ <> ^ |

 e.g.  ^\  ^&  ^|  ^>  ^<  ^^

语法:转义字符,分隔符和引号


进一步阅读


如果我以任何方式更改数据,例如,如果我添加“应用程序不会运行,如果我添加^我得到一个功能ID没有注册错误需要所以不知何故保持数据完整,同时将其添加到蝙蝠
命运Averruncus

查看更新的答案。
DavidPostill

1

DavidPostil是正确的,你必须用双引号括起整个数据字符串,然后在字符串中转义和双引号,以确保它知道它们是字符串的一部分。

在这种情况下,您要添加的整个数据字符串是:

xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde /p "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /e "%1"

因此,您希望将整个字符串包装在双引号中,以便命令行将其识别为单个字符串(而不是多个参数)。

诀窍是弄清楚那些分隔引号中的引号(和其他字符)是否需要转义,然后弄清楚如何为这个上下文转义它们。

尝试解决它需要一些试验和错误,但对于这种情况,你只需要担心内部双引号,并通过在它们前面加上反斜杠(\)来逃避它们:

reg add "HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command" /v command /t REG_MULTI_SZ /d "xb'BV5!!!!!!!!!MKKSkEXCELFiles>VijqBof(Y8'w!FId1gLQ /dde /p \"C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE\" /e \"%1\""

说了这么多,并且基于似乎正在继续完全确定的问题,我认为Ramhound可能在他的评论中提到了最好/最简单的解决方案。

只需根据需要设置设置,然后将该密钥导出到.reg文件即可。

然后reg import在批处理文件中使用以导入该.reg文件。

如果您不喜欢使用/分发两个文件,和/或您没有中心位置可以将它放在网络上,那么您可以随时通过回显来批处理文件创建.reg文件。输出到临时文本文件,导入它然后删除临时文件一旦完成。


感谢帮助的家伙,但我已经尝试过,所以似乎它的工作原理是将它添加到一个蝙蝠文件但最终产品不起作用它得到一个错误所以有没有办法添加更多的文件蝙蝠或类似的东西如果我导出那个特定的reg键并使它成为一个pacake与蝙蝠运行togheter或什么?
命运Averruncus 2015年

这个解决方案看起来很不错,除了它现在不是一个REG_MULTI_SZ字符串数组......我认为它甚至不是原始代码。
DavidPostill

@DavidPostill好点。我只是假设提供的数据是正确的。:)
Ƭᴇcʜιᴇ0072015年

嗯,现在还有其他问题,如果你不介意,如何让批处理文件通过将回显线放入文本文件来创建.reg文件?
命运Averruncus 2015年

echo This is a line of text >> file.reg
Ƭᴇcʜιᴇ0072015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.