我们的一些应用程序中使用Java Preferences,并且由于调用该实用程序的工具相当古老且是在Windows XP时编写的,我们并没有真正注意到这一点。但似乎在Windows 7中不再将Java Preferences存储在注册表中,或者它们被存储在其他地方。
我期望它在以下位置: HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs 但我没有在那里看到它。
更奇怪的是,当我运行此应用程序时:
我期望它在以下位置: 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唯一的原因是该设置会随着运行的环境而改变。也就是说,通过手动插入注册表键并进行一些检查,通常会很有用。
我是以管理员身份运行的,但是我没有看到我期望他们在哪里的键。
HKEY_LOCAL_MACHINE
下?我期望它应该存在于HKEY_CURRENT_USER
下。此外,你为什么关心这个问题?它没有记录是有原因的:你不应该依赖它,它随时可能会改变。 - Joachim SauersystemRoot()
而不是userRoot()
。 - Joachim Sauer