Мы используем предпочтения Java в некоторых наших приложениях и на самом деле не заметили этого, поскольку утилита, которая делает вызовы, довольно старая и была написана в дни Windows XP. Но, похоже, предпочтения Java больше не хранятся в реестре в Windows 7 - или они хранятся где-то разные.
Я ожидаю, что он будет:
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs
Но я не вижу его там.
Что делает его более прочным, так это при запуске этого приложения:
public static void main( final String[] args ) throws BackingStoreException {
Preferences systemRoot = Preferences.systemRoot();
Preferences preferences = systemRoot.node( "com/mycompany/settings" );
systemRoot.put( "foo", "bar" );
systemRoot.put( "baz", "lolz" );
System.out.println( "-------------------------------" );
String[] keys = preferences.keys();
for( String key : keys ) {
System.out.println( key );
}
System.out.println( "-------------------------------" );
keys = systemRoot.keys();
for( String key : keys ) {
System.out.println( key );
}
}
На самом деле он пишет (я могу прокомментировать и запустить его снова, и он работает), но я не вижу новых ключей в реестре.
Кроме того, я не могу видеть, что это документировано где угодно. Спасибо заранее.
РЕДАКТИРОВАТЬ № 1 Единственная причина, по которой это имеет значение, заключается в том, что настройка изменяется в зависимости от того, в какой среде она выполняется. При этом часто бывает полезно имитировать эту среду, вручную вставив ключи реестра, а затем выполнив некоторую проверку.
Я работал как admin, но я не видел ключей в реестре, где я ожидал, что они будут.