我已经完成了更改注册表数据的.java文件。但是我在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!");
}
}
}
答案 0 :(得分:15)
您需要转义路径中使用的反斜杠。
String windowsPath = "\\Users\\FunkyGuy\\My Documents\\Hello.txt";
答案 1 :(得分:4)
您需要使用其他\
转义\
,因此请在输入字符串中将\
替换为\\
。
答案 2 :(得分:3)
您需要转义注册表路径字符串中的反斜杠字符:
"REG ADD `HKCU\\Software\\ ...
反斜杠字符在字符串中有特殊含义:它用于引入转义字符。如果你想在字符串中使用它,那么你需要通过使用双反斜杠来转义 it 。
答案 3 :(得分:2)
Java中的反斜杠是特殊的“转义”字符,它们提供了包括标签\t
和/或新行\n
等内容以及许多其他有趣内容的功能。
毋庸置疑,你要通过添加\
字符来“逃避”它们......
'HKCU\\Software\\Microsoft\\Internet Explorer\\Main'
旁注。我会使用ProcessBuilder或至少使用Runtime#exec
的{{1}}版本。
在处理命令参数中的空格时,它会省去很多麻烦,恕我直言
答案 4 :(得分:1)
可能是因为你没有逃脱字符串中的反斜杠。有关正确转义的详细信息,请查看http://docs.oracle.com/javase/tutorial/java/data/characters.html。
答案 5 :(得分:1)
您需要使用\
\\
下面的代码将起作用
Runtime.getRuntime().exec("REG ADD 'HKCU\\Software\\Microsoft\\Internet Explorer\\Main' /V 'Start Page' /D 'http://www.stackoverflow.com/' /F");