web-dev-qa-db-fra.com

Où les préférences Java Java sont-elles stockées dans Windows 7?

Nous utilisons les préférences Java dans certaines de nos applications et nous ne l'avons pas vraiment remarqué car l'utilitaire qui effectue les appels est assez ancien et a été écrit dans Windows XP = jours. Mais il semble que les préférences Java ne sont plus stockées dans le registre de Windows 7 - ou qu'elles le soient ailleurs.

Je m'attends à ce que ce soit dans:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs

Mais je ne le vois pas là.

Ce qui le rend plus étrange, c'est que lorsque j'exécute cette application:

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 );
    }
}

Il écrit en fait (je peux commenter la sortie et l'exécuter à nouveau et cela fonctionne) mais je ne vois pas les nouvelles clés dans le registre.

De plus, je n'arrive pas à voir cela documenté nulle part. Merci d'avance.

EDIT # 1 La seule raison pour laquelle cela importe est que le paramètre change en fonction de l'environnement dans lequel il est exécuté. Cela étant dit, il est souvent utile de simuler cet environnement en insérant les clés de registre manuellement puis en effectuant quelques vérifications.

J'exécutais en tant qu'administrateur, mais je n'ai pas vu les clés dans le registre où je m'attendais à ce qu'elles soient.

47
javamonkey79

Ils sont sous l'utilisateur actuel: HKEY_CURRENT_USER\Software\JavaSoft\Prefs

54
AlexR

pour systemRoot:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\...

pour userRoot:

HKEY_CURRENT_USER\SOFTWARE\JavaSoft\...
25
bestsss

J'ai eu un problème similaire lorsque j'ai travaillé avec les préférences de systemRoot et avec l'aide d'un moniteur de registre, j'ai découvert que l'emplacement où elles sont stockées change selon que le système d'exploitation Windows est 32 bits ou 64 bits.

Sous un système d'exploitation 32 bits (Windows XP dans mon cas), le chemin du registre systemRoot était

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs

Sous un système d'exploitation 64 bits (Windows 7 dans mon cas), le chemin du registre systemRoot était

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Prefs

Le même JRE 32 bits (JRE 1.6.0_20-b02) a été utilisé sur les deux systèmes.

Lors de l'exécution d'une application 32 bits (la JVM) sur une fenêtre 64 bits, le registre insère automatiquement l'élément de chemin Wow6432Node pour permettre aux applications compilées pour 32 ou 64 bits de coexister sur la même machine tout en conservant leur paramètres séparés.

15
Erik Emanuelsson

Certaines préférences sont stockées dans des clés de registre, tandis que d'autres (maintenant je vais vérifier exactement lesquelles) semblent stockées dans des fichiers texte; par exemple, la préférence "Utiliser les certificats et les clés dans le magasin de clés du navigateur" est stockée dans 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=

Cela a été vérifié sur Windows 7 pro/32 bits - JRE 1.7.0_60 (i586)

sources:
Question connexe sur ce site
Oracle - Java SE - Fichier de configuration de déploiement et propriétés

Bonne journée

1
Edgar Grill