4

我已经完成了更改注册表数据的 .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!");
      }
  }
}
4

6 回答 6

18

您需要转义路径中使用的反斜杠。

String windowsPath = "\\Users\\FunkyGuy\\My Documents\\Hello.txt";
于 2012-10-15T04:25:14.923 回答
5

您需要\使用 another进行转义,因此请在输入字符串中\替换\为。\\

于 2012-10-15T04:25:35.963 回答
3

您需要转义注册表路径字符串中的反斜杠字符:

"REG ADD `HKCU\\Software\\ ...

反斜杠字符在字符串中具有特殊含义:它用于引入转义字符。如果您想在字符串中逐字使用它,则需要使用双反斜杠对其进行转义。

于 2012-10-15T04:25:23.270 回答
2

Java 中的反斜杠是特殊的“转义”字符,它们提供了包含制表符\t和/或换行符之类\n的东西以及许多其他有趣的东西的能力。

\不用说,你也可以通过添加一个附加字符来“逃避”它们......

'HKCU\\Software\\Microsoft\\Internet Explorer\\Main'

在旁注中。我会使用ProcessBuilder或至少Runtime#exec使用数组参数的版本。

在处理命令参数中的空格时,恕我直言,这将节省很多麻烦

于 2012-10-15T04:29:45.810 回答
1

可能是因为您没有转义字符串中的反斜杠。查看http://docs.oracle.com/javase/tutorial/java/data/characters.html以获取有关正确转义的更多信息。

于 2012-10-15T04:26:15.717 回答
1

您需要将 escape 替换\\\

下面的代码将起作用

Runtime.getRuntime().exec("REG ADD 'HKCU\\Software\\Microsoft\\Internet Explorer\\Main' /V 'Start Page' /D 'http://www.stackoverflow.com/' /F");
于 2012-10-15T04:29:55.160 回答