我有一个Java应用程序,通过使用以下方式从Preferences
读取:
我有一個 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失败。但这不是我安装程序时可以要求用户做的事情。
因此,我正在寻找更好的解决方案。我最后的努力是简单地写入文件,但我想避免这样做。这似乎也涉及我正在尝试在不使用Windows注册表的情况下使用XML中的Java Prefences,但我看到一个与注册表相关的消息 ,但它被否决而没有答案。
目前,我怀疑是Win8 JVM的错误…
问题
- 是否有任何人知道不涉及写文件的解决方案?
- 为什么相同的代码在Windows 7中完全正常工作但在Windows 8中失败了?