Подтвердить что ты не робот

Где находятся предпочтения Java, хранящиеся в Windows 7?

Мы используем предпочтения 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, но я не видел ключей в реестре, где я ожидал, что они будут.

4b9b3361

Ответ 1

Они находятся под текущим пользователем: HKEY_CURRENT_USER\Software\JavaSoft\Prefs

Ответ 2

для systemRoot: HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft...

для userRoot: HKEY_CURRENT_USER\SOFTWARE\JavaSoft...

Ответ 3

У меня была аналогичная проблема, когда я работал с настройками systemRoot, и с помощью монитора реестра я обнаружил, что место, где они хранятся, изменяется в зависимости от того, является ли операционная система Windows 32-разрядной или 64-разрядной.

В 32-битной ОС (Windows XP в моем случае) путь к системному реестру был

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs

В 64-битной ОС (Windows 7 в моем случае) путь реестра systemRoot был

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Prefs

В обеих системах использовался тот же 32-разрядный JRE (JRE 1.6.0_20-b02).

При запуске 32-разрядного приложения (JVM) в 64-битных окнах реестр автоматически вставляет элемент пути Wow6432Node, чтобы разрешить приложения, скомпилированные для 32-разрядных или 64-разрядных, совместно существовать на одной машине сохраняя при этом свои настройки.

Ответ 4

Некоторые настройки сохраняются в разделах реестра, в то время как некоторые другие (теперь я собираюсь проверить, какие именно) хранятся в текстовых файлах; например, предпочтение "Использовать сертификаты и ключи в хранилище ключей" хранится в C:\Users\%USER%\AppData\LocalLow\Sun\Java\Deployment\deployment.properties:

#deployment.properties
#Thu Jun 12 15:26:53 CEST 2014

deployment.security.browser.keystore.use=false

deployment.modified.timestamp=1402579613914
deployment.version=7.21
deployment.browser.path=C\:\\Program Files\\Mozilla Firefox\\firefox.exe
#Java Deployment jre's
#Thu Jun 12 15:26:53 CEST 2014
deployment.javaws.jre.0.registered=true
deployment.javaws.jre.0.platform=1.7
deployment.javaws.jre.0.osname=Windows
deployment.javaws.jre.0.path=C\:\\Program Files\\Java\\jre7\\bin\\javaw.exe
deployment.javaws.jre.0.product=1.7.0_60
deployment.javaws.jre.0.osarch=x86
deployment.javaws.jre.0.location=http\://java.sun.com/products/autodl/j2se
deployment.javaws.jre.0.enabled=true
deployment.javaws.jre.0.args=

Это было проверено на Windows 7 pro/32 bit - JRE 1.7.0_60 (i586)

источники:
Связанный с этим вопрос на этом сайте
Документация Oracle - Java SE - Файл и свойства конфигурации развертывания

Хороший день