32位应用程序如何访问64位注册表

5
请不要将这个问题标记为重复!
我正在寻找一个Java解决方案 - 而不是C# - 并使用了WinRegistry类。
我编写了一个可以读取注册表键的程序。现在的问题是:Java应用程序是32位的,我想从运行Windows 7 64位系统的计算机中读取注册表键。使用这段代码,Windows会将我的32位程序重定向到64位注册表的32位部分(将实际路径与代码中的注释进行比较 - Wow6432Node!)。
// only access to "SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run"
value = WinRegistry.readString(WinRegistry.HKEY_LOCAL_MACHINE,
    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "Citrix Login Service");

我删除了try-catch块,这样你就能更好地集中精力解决真正的问题。

1个回答

7
我现在解决了这个问题 - 感谢Petrucio在2012年发布了此解决方案:使用Java读取/写入Windows注册表
例如 - 读取操作:
try { 
  String value = WinRegistry.readString(WinRegistry.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "TestValue", WinRegistry.KEY_WOW64_64KEY);
  System.out.println(value);
} catch (Exception ex) {
  ex.printStackTrace(); 
}

我希望这对某些人有用。


非常感谢您的研究,它为我节省了很多时间和挫折。 - MyPasswordIsLasercats
感谢!我也遇到了同样的问题。 - bgplaya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接