您很可能正在运行 32 位安装程序,但您正在寻找 64 位注册表中的值。
32 位可执行文件在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node. 注册表操作始终从与安装程序位数相对应的注册表视图中读取。如果您安装了 64 位 JDK 而没有安装 32 位 JDK,那么您感兴趣的注册表值在注册表的 32 位视图中将为空。
要检查这是否真的是您的问题,请尝试在媒体向导的“32 位或 64 位”步骤中选择“生成 64 位可执行文件”,然后它应该可以按预期工作。
使用 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 位视图。