【发布时间】:2011-07-24 22:00:58
【问题描述】:
在我的 java 应用程序中,我通过 reg.exe 向注册表添加了一些值,但我似乎无法让双引号工作。 我的代码如下所示:
rt.exec("REG ADD HKCU\\Software\\MyApp\\Settings /v myPath /t REG_SZ /d \"C:\\mydir\"");
如您所见,我已经用 \" 转义了双引号,但是当我查看注册表时,添加的值没有双引号。知道有什么问题吗?
【问题讨论】:
在我的 java 应用程序中,我通过 reg.exe 向注册表添加了一些值,但我似乎无法让双引号工作。 我的代码如下所示:
rt.exec("REG ADD HKCU\\Software\\MyApp\\Settings /v myPath /t REG_SZ /d \"C:\\mydir\"");
如您所见,我已经用 \" 转义了双引号,但是当我查看注册表时,添加的值没有双引号。知道有什么问题吗?
【问题讨论】:
cmd.exe shell 为您“帮助”去除引号字符。这与 Java 或 reg.exe 无关。
This answer 回答类似问题可能对您有所帮助。
另外,您应该考虑使用ProcessBuilder 而不是Runtime.exec()。
【讨论】:
双引号不应出现在注册表项中。双引号被命令行处理吃掉了。
【讨论】:
您可以尝试使用所需的注册表值创建一个临时文件并以这种方式添加它。 REG IMPORT 将为您完成这项工作,您不必担心引号,除非文件名中有空格。
【讨论】:
在这种情况下,您应该添加额外的引号:
rt.exec("REG ADD HKCU\\Software\\MyApp\\Settings /v myPath /t REG_SZ /d "\"C:\\mydir\""");
【讨论】: