有人知道如何使用读取或写入Windows注册表操作吗?我得到的只是尝试失败。
一个例子是尝试从HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit
读取CurrentVersion
密钥,我知道它在那里并设置,无法读取。我将注册表根设置为HKEY_LOCAL_MACHINE
,将密钥名称设置为SOFTWARE\JavaSoft\Java Development Kit
,将值名称设置为CurrentVersion
,但仍然失败。任何帮助都会非常感激。
感谢。
答案 0 :(得分:2)
您很可能正在运行32位安装程序,但您正在寻找64位注册表中的值。
32位可执行文件在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
下有自己的软件设置。注册表操作始终从注册表视图中读取,该视图与安装程序的位数相对应。如果您安装了64位JDK而没有安装32位JDK,那么您感兴趣的注册表值将在注册表的32位视图中为空。
要检查这是否确实是您的问题,请尝试在媒体向导的“32位或64位”步骤中选择“生成64位可执行文件”,然后它应按预期工作。< / p>
使用API,您可以显式设置注册表视图:
Object value = WinRegistry.getValue(
RegistryRoot.HKEY_LOCAL_MACHINE,
"SOFTWARE\\JavaSoft\\Java Development Kit",
"CurrentVersion",
RegistryView.BIT64
);
if (value != null) {
context.setVariable("javaCurrentVersion", value.toString());
}
通过使用RegistryView.BIT64
和RegistryView.BIT32
,您可以从32位安装程序访问64位视图,从64位安装程序访问32位视图。