Моя программа сохраняет зашифрованные данные ключа продукта на компьютер с помощью класса java.util.Preferences
(system предпочтения, а не пользователя). Проблема в том, что как в Windows, так и в Linux (не тестировалось в OSX, но, вероятно, то же самое), если я не запускаю программу с sudo
или с правами администратора , он выдает исключение или предупреждение всякий раз, когда пытается прочитать или сохранить данные.
Очевидно, что требовать от пользователя запуска программы с правами администратора было бы непрактично. В оптимальном случае я бы хотел, чтобы операционная система запрашивала у пользователя разрешение .
Это довольно глупо и лишает половины цели Предпочтения
. Как это можно исправить?
Вот краткое изложение того, что мне нужно : Мне нужно, чтобы моя программа запрашивала разрешение у операционной системы на сохранение системных настроек.
Вот ошибка когда когда я пытаюсь прочитать узел (потому что узел не существует):
Mar 18, 2011 9:41:15 AM java.util.prefs.WindowsPreferences <init>
WARNING: Could not create windows registry node Software\JavaSoft\Prefs\myapp at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Mar 18, 2011 9:41:15 AM java.util.prefs.WindowsPreferences WindowsRegOpenKey1
WARNING: Trying to recreate Windows registry node Software\JavaSoft\Prefs\myapp at root 0x80000002.
Mar 18, 2011 9:41:15 AM java.util.prefs.WindowsPreferences openKey
WARNING: Could not open windows registry node Software\JavaSoft\Prefs\myapp at root 0x80000002. Windows RegOpenKey(...) returned error code 2.
Mar 18, 2011 9:41:15 AM java.util.prefs.WindowsPreferences WindowsRegOpenKey1
WARNING: Trying to recreate Windows registry node Software\JavaSoft\Prefs\myapp\subpackage at root 0x80000002.
Mar 18, 2011 9:41:15 AM java.util.prefs.WindowsPreferences openKey
WARNING: Could not open windows registry node Software\JavaSoft\Prefs\myapp\subpackage at root 0x80000002. Windows RegOpenKey(...) returned error code 2.
И вот что происходит, когда я пытаюсь записать на узел:
Mar 18, 2011 9:43:11 AM java.util.prefs.WindowsPreferences WindowsRegOpenKey1
WARNING: Trying to recreate Windows registry node Software\JavaSoft\Prefs\myapp\subpackage at root 0x80000002.
Mar 18, 2011 9:43:11 AM java.util.prefs.WindowsPreferences openKey
WARNING: Could not open windows registry node Software\JavaSoft\Prefs\myapp\subpackage at root 0x80000002. Windows RegOpenKey(...) returned error code 2.