java - 如何使用注册表操作

标签 java registry install4j

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

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

谢谢。

最佳答案

很可能您运行的是 32 位安装程序,但您正在寻找 64 位注册表中的值。

32 位可执行文件在 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node 下有自己的软件设置。注册表操作始终从与安装程序的位数相对应的注册 TableView 中读取。如果您安装了 64 位 JDK 而没有安装 32 位 JDK,则您感兴趣的注册表值在注册表的 32 位 View 中将为空。

要检查这是否真的是您遇到的问题,请尝试在媒体向导的“32 位或 64 位”步骤中选择“生成 64 位可执行文件”,然后它应该会按预期工作。

使用 API,您可以显式设置注册 TableView :

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 位 View ,从 64 位安装程序访问 32 位 View 位安装程序。

关于java - 如何使用注册表操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8217105/

相关文章:

linux - Linux i install4j 的平台特定变量

install4j - 使用 Install4J 下载并安装其他应用程序

java - 使用Install4j确定是否安装了JRE

java - 在docker文件: alpine-java-python and python3 removes installed java?中使用2 FROM

java - 在 SpringMVC 中通过 AOP 将一些内容设置到 Freemarker 页面中

Java:带有新关键字的接口(interface)怎么可能?

java - 使用静态类作为存储

python - winreg.OpenKey 为现有注册表项抛出 filenotfound 错误

WiX Burn Bootstrapper 被趋势科技检测为病毒/恶意软件

c# - 如何从注册表中读取值?