有人知道如何使用读取或写入 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.BIT64
和 RegistryView.BIT32
,您可以从 32 位安装程序访问 64 位 View ,从 64 位安装程序访问 32 位 View 位安装程序。
关于java - 如何使用注册表操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8217105/