У меня есть приложение 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 Failed. Но это не то, что я могу потребовать от моих пользователей, когда они устанавливают программу.
Итак, я ищу лучшее решение. Мое последнее стремление - просто написать в файл, но Я бы хотел избежать этого. Это также похоже на Я пытаюсь использовать Java Prefences из XML БЕЗ использования реестра Windows, но я вижу сообщение, связанное с реестром, но оно было отклонено без ответа.
В настоящее время я подозреваю, что ошибка JVM от Win8...
Вопросы
- Кто-нибудь знает о решении, которое не связано с написанием файлов?
- Почему один и тот же код отлично работает в Windows 7, но в Windows 8 он не работает?