3

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

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

谢谢。

4

1 回答 1

2

您很可能正在运行 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.BIT64RegistryView.BIT32您可以从 32 位安装程序访问 64 位视图,从 64 位安装程序访问 32 位视图。

于 2011-11-22T09:41:48.733 回答