如何使用注册表操作

时间:2011-11-21 19:04:23

标签: java registry install4j

有人知道如何使用读取或写入Windows注册表操作吗?我得到的只是尝试失败。

一个例子是尝试从HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit读取CurrentVersion密钥,我知道它在那里并设置,无法读取。我将注册表根设置为HKEY_LOCAL_MACHINE,将密钥名称设置为SOFTWARE\JavaSoft\Java Development Kit,将值名称设置为CurrentVersion,但仍然失败。任何帮助都会非常感激。

感谢。

1 个答案:

答案 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.BIT64RegistryView.BIT32,您可以从32位安装程序访问64位视图,从64位安装程序访问32位视图。