我已经做了我的.java文件,更改registry数据。 但是,我在Runtime.getRuntime().exec
所在的行上收到“非法转义字符”错误。 我的错误在哪里?
import java.util.*; import java.applet.Applet; import java.awt.*; class test { public static void main(String args[]) { try { Runtime.getRuntime().exec("REG ADD 'HKCU\Software\Microsoft\Internet Explorer\Main' /V 'Start Page' /D 'http://www.stackoverflow.com/' /F"); } catch (Exception e) { System.out.println("Error ocured!"); } } }
你需要避开你的路径中使用的反斜杠 。
String windowsPath = "\\Users\\FunkyGuy\\My Documents\\Hello.txt";
您需要使用另一个\
来转义\
,所以在输入字符串中用\\
替换\
。
您需要转义注册表路径字符串中的反斜杠字符:
"REG ADD `HKCU\\Software\\ ...
反斜杠字符在字符串中有特殊的含义:它用于引入转义字符。 如果你想在一个字符串中直接使用它,那么你需要使用一个双反斜杠来转义它 。
在Java中的反斜杠是特殊的“逃生”字符,它们提供了包括标签\t
和/或新行\n
以及许多其他有趣的东西的能力。
不用说,你也可以通过添加\
字符来“逃避”它们。
'HKCU\\Software\\Microsoft\\Internet Explorer\\Main'
在旁边注意。 我将使用ProcessBuilder,或者至少使用数组参数的Runtime#exec
版本。
对于处理命令参数中的空格,恕我直言,这将节省很多麻烦
可能是因为你没有逃避你的字符串中的反斜杠。 查看http://docs.oracle.com/javase/tutorial/java/data/characters.html以获取有关正确转义的更多信息。
你需要用\\
替换escape \
下面的代码将工作
Runtime.getRuntime().exec("REG ADD 'HKCU\\Software\\Microsoft\\Internet Explorer\\Main' /V 'Start Page' /D 'http://www.stackoverflow.com/' /F");