我正在尝试使用Java创建启动注册表键,但结果非常奇怪。在某些操作系统(例如XP)上,该命令可以完美地工作。然而,在Windows 7上,它只会在运行编译后的jar或类时创建该键,并且无法从网页上的小程序中创建。此外,在Windows 8上,该命令根本无法工作。我已经尝试进行调试,似乎REG命令执行成功。如果我在命令提示符中手动运行该命令,则创建键,输出与从程序内部运行时相同。以下是代码示例:
在log0.txt文件中,它打印了以下内容:
"The operation completed successfully."
此外,程序的"result"也打印出了:
ADD: 0
所以此时,我无法确定问题出在哪里。我知道还有其他不可靠的添加注册表的方法,但我希望我的代码能够与所有VM分发版兼容。有没有一种方法来实现这个或修复现有的方法呢?
public static int regadd(String key, String name, String val) throws IOException, InterruptedException {
ProcessBuilder pb = new ProcessBuilder(new String[]{"REG", "ADD", key, "/v", name, "/d", val, "/f"});
pb.redirectOutput(new File(PathManager.getDirectory(), "log0.txt"));
int i = pb.start().waitFor();
Logger.log("ADD: " + i);
return i;
}
在log0.txt文件中,它打印了以下内容:
"The operation completed successfully."
此外,程序的"result"也打印出了:
ADD: 0
所以此时,我无法确定问题出在哪里。我知道还有其他不可靠的添加注册表的方法,但我希望我的代码能够与所有VM分发版兼容。有没有一种方法来实现这个或修复现有的方法呢?