Java 首选项存储在 Windows 7 中的什么位置?

2022-08-31 19:49:22

我们在一些应用程序中使用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这很重要的唯一原因是设置会根据运行的环境而变化。话虽如此,通过手动插入注册表项然后进行一些检查来模拟该环境通常很有用。

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


答案 1

它们位于当前用户下:HKEY_CURRENT_USER\Software\JavaSoft\Prefs


答案 2

对于 systemRoot:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\...

对于 userRoot:

HKEY_CURRENT_USER\SOFTWARE\JavaSoft\...

推荐