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

我们在我们的一些应用程序中使用Java偏好设置,并没有真正注意到这一点,因为调用的实用程序相当古老,并且是在Windows XP中编写的。 但是,似乎Java偏好不再存储在Windows 7的registry中 – 或者它们存储在不同的地方。

我期待它在:

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

它实际上写道(我可以评论放出,并再次运行,它的工作原理),但我没有看到在registry中的新键。

此外,我似乎无法看到任何地方logging。 提前致谢。

编辑#1这个重要的唯一原因是设置的变化取决于它运行的环境。 这就是说,通过手动插入registry项并进行一些检查来模拟该环境通常是有用的。

我以pipe理员身份运行,但是我没有在registry中看到我期望的密钥。

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

为systemRoot:HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft …

对于userRoot:HKEY_CURRENT_USER \ SOFTWARE \ JavaSoft …

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

在32位操作系统(Windows XP在我的情况下)systemRootregistrypath是

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs

在64位操作系统(Windows 7在我的情况下)systemRootregistrypath是

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Prefs

两个系统都使用相同的32位JRE(JRE 1.6.0_20-b02)。

在64位窗口上运行32位应用程序(JVM)时,registry会自动插入Wow6432Nodepath元素,以允许为32位或64位编译的应用程序共存于同一台机器上,同时保留它们设置分开。

有些首选项存储在registry项中,而其他一些(现在我要检查确切的是哪些)似乎存储在文本文件中; 例如,在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位上validation – JRE 1.7.0_60(i586)

来源:
这个网站的相关问题
Oracle – Java SE文档 – 部署configuration文件和属性

祝你今天愉快