我有一个 Java 应用程序,它通过以下方式读取Preferences
:
Preferences prefs = Preferences.userNodeForPackage(MyClass.class);
prefs.get((String)key, "");
在新的 Windows 8 机器上,这失败了:
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs
at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
错误代码 5 是拒绝访问。
我找不到任何我做错的事情。Google 和 SO 搜索给出的旧结果仅与错误使用的 Windows Vista/7 相关systemRoot
(如何使用 Java 编写系统首选项?可以调用 UAC 吗?)。
可以通过创建 HKLM/Software/JavaSoft/Prefs 并将权限设置为 HKLM/Software/JavaSoft 来“治愈”该错误,如此处所述Java: java.util.Preferences Failing。但这不是我可以要求我的用户在安装程序时做的事情。
所以我正在寻找更好的解决方案。我最后的努力是简单地写入文件,但我想避免这种情况。这似乎也与我试图在不使用 Windows 注册表的情况下使用 XML 中的 Java 首选项有关,但我看到了与注册表相关的消息,但它在没有答案的情况下被否决。
目前我怀疑是 Win8 JVM 错误...
问题
- 有谁知道不涉及写入文件的解决方案?
- 为什么相同的代码在 Windows 7 中运行良好,但在 Windows 8 中却惨遭失败?