2012-10-15 112 views
0

可能重复cmd命令:
read/write to Windows Registry using Java运行与Java

我试图运行在Java这个CMD代码。

REG ADD "HKCU\SOFTWARE\MICROSOFT\INTERNET EXPLORER\MAIN" /V "START PAGE" /D "http://www.google.com/" /F 

这适用于bat文件。我试图让它在java上工作

import java.util.*; 

private static void addToWin(File f, String param) throws IOException { 
String name = generateName(f); 
String cmd = "REG ADD HKCU\\Software\\Microsoft\\Internet Explorer\\Main /V Start Page /D http://www.google.com/ /F"; 
Runtime.getRuntime().exec(cmd); 
} 

但没有奏效。我该如何做这项工作?

+0

定义 “但不工作的。” – kosa

+0

当我运行它时没有任何反应。 – user198989

+0

你使用ADMINISTRATOR权限运行你的java程序吗? –

回答

4

给你:

ProcessBuilder pb = new ProcessBuilder(new String[]{"REG", "ADD", "HKCU\\Software\\Microsoft\\Internet Explorer\\Main", "/v", "Start Page", "/d", "\"http://www.google.com/\"", "/f"}); 
pb.start(); 
+0

它给了我这个错误 http://i.imgur .COM/lpEZD.jpg – user198989

0

如果您愿意从/进入Windows注册表读/写,我会建议您看看this question

+0

由于该问题包含详细说明如何使用shell调用和REG实用程序读取和写入注册表的答案,因此我要投票将该问题作为完全相同的副本进行投票。 – Wug

+0

Runtime.getRuntime()。exec(“reg ”); 这在这个链接中提到。但不起作用,因为注册行不可执行,所以你需要运行cmd来做到这一点。这就是为什么我问我的问题。 – user198989

1

你需要使用引号包含空格的命令行参数:\\Internet Explorer\\

+0

无法使其工作。你能否更具体一些? – user198989

1

你缺少\"报价。

因此,该命令被误解,因为它包含空格。引用是必不可少的!

尝试添加一个简单的

System.err.println(cmd); 

(或使用自己喜欢的记录)。注意丢失的引号。如果打印的字符串与执行的命令不相同,则不会令人惊讶,它不起作用。

+0

无法使其工作。你能否更具体一些? – user198989

+1

查看更新的答案,并提示调试。你的'String cmd'不正确。它必须具有相同的'''字符!如果你用你试过的东西编辑你的问题是有帮助的 - 我们看不到你的屏幕上有什么! –