2011-02-09 44 views
38

我們在我們的一些應用程序中使用了Java偏好設置,並沒有真正注意到這一點,因爲打電話的實用程序相當陳舊,並且是在Windows XP中編寫的。但似乎Java偏好不再存儲在Windows 7的註冊表中 - 或者它們存儲在不同的地方。Windows 7中存儲的Java首選項在哪裏?

,我希望它是:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs

但我沒有看到它在那裏。

是什麼使得它wierder是,當我運行這個程序:

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這個問題的唯一原因是設置更改取決於它運行的環境。這就是說,通過手動插入註冊表項並進行一些檢查來模擬該環境通常很有用。

我當時是以管理員身份運行,但我沒有在註冊表中看到我期望他們的密鑰。

+2

你可以使用Sysinternals的進程監視器看到該過程的註冊表和文件系統操作,並嘗試推斷讀取/寫入的位置。 – 2011-02-09 16:22:34

+1

爲什麼它應該在HKEY_LOCAL_MACHINE下存儲任何東西?我期望它在[`HKEY_CURRENT_USER`](http://en.wikipedia.org/wiki/Windows_Registry#HKEY_CURRENT_USER_.28HKCU.29)下生活。另外:你爲什麼在意?這是沒有證據的,原因是:你不應該依賴它,它可以隨時改變。 – 2011-02-09 16:25:32

+0

必須在那裏:btw你以管理員身份運行嗎? – bestsss 2011-02-09 16:27:09

回答

20

爲SYSTEMROOT: HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft的...

爲userRoot: HKEY_CURRENT_USER \ SOFTWARE \ JavaSoft的...

45

他們是在當前用戶下:HKEY_CURRENT_USER\Software\JavaSoft\Prefs

13

我有一個當我使用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位窗口上運行32位應用程序(JVM)時,註冊表會自動插入Wow6432Node路徑元素,以允許爲32位或64位編譯的應用程序共存於同一個路徑元素上同時保持其設置不同。

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系統)

來源:
​​
Oracle - Java SE documentation - Deployment Configuration File and Properties

有一個愉快的一天

相關問題