Windows 7中存储的Java首选项在哪里?

时间:2011-02-09 16:21:07

标签: java windows-7 preferences

我们在某些应用程序中使用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 唯一重要的原因是设置的更改取决于运行的环境。这就是说,通过手动插入注册表项然后进行一些检查来模拟该环境通常很有用。

我是以管理员身份运行的,但我没有在注册表中看到我期望它们的密钥。

4 个答案:

答案 0 :(得分:53)

他们在当前用户下:HKEY_CURRENT_USER\Software\JavaSoft\Prefs

答案 1 :(得分:23)

for systemRoot:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\...

表示userRoot:

HKEY_CURRENT_USER\SOFTWARE\JavaSoft\...

答案 2 :(得分:15)

当我使用systemRoot首选项时,我遇到了类似的问题,并且在注册表监视器的帮助下,我发现它们存储的位置会根据Windows操作系统是32位还是64位而发生变化。

在32位操作系统(在我的情况下为Windows XP)中,systemRoot注册表路径为

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)。

在64位Windows上运行32位应用程序(JVM)时,注册表会自动插入Wow6432Node路径元素,以允许编译为32位或64位的应用程序在同一台机器上共存同时保持他们的设置分开。

答案 3 :(得分:1)

某些首选项存储在注册表项中,而其他一些首选项(现在我将确切地检查哪些)似乎存储在文本文件中;例如,首选项“在浏览器密钥库中使用证书和密钥”存储在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专业版/ 32位 - JRE 1.7.0_60(i586)

上得到验证

来源:
Related question on this site
Oracle - Java SE documentation - Deployment Configuration File and Properties

度过愉快的一天