2011-02-09 35 views
38

Chúng tôi sử dụng các tùy chọn Java trong một số ứng dụng của chúng tôi và chưa thực sự nhận thấy điều này vì tiện ích thực hiện cuộc gọi khá cũ và được viết trong Windows XP ngày. Nhưng có vẻ như các ưu tiên Java không còn được lưu trữ trong sổ đăng ký trong Windows 7 - hoặc chúng được lưu trữ ở một nơi khác.Các tùy chọn Java được lưu trữ trong Windows 7 ở đâu?

Tôi mong nó sẽ được ở:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs

Nhưng tôi không thấy nó ở đó.

Điều gì làm cho nó wierder, là khi tôi chạy ứng dụng này:

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

Nó thực sự viết (Tôi có thể bình luận các đưa ra và chạy nó một lần nữa và nó hoạt động) nhưng tôi không thấy mới trong registry.

Ngoài ra, tôi dường như không thấy tài liệu này ở bất cứ đâu. Cảm ơn trước.

EDIT # 1 Lý do duy nhất cho vấn đề này là cài đặt sẽ thay đổi phụ thuộc vào môi trường nào được chạy. Điều này đang được nói, nó thường hữu ích để mô phỏng môi trường đó bằng cách chèn các khóa registry bằng tay và sau đó thực hiện kiểm tra.

Tôi đã chạy với tư cách quản trị viên, nhưng tôi không thấy các khóa trong sổ đăng ký mà tôi mong đợi.

+2

Bạn có thể sử dụng Sysinternals Process Monitor để xem đăng ký và hệ thống tập tin hoạt động cho quá trình đó và cố gắng suy ra nơi đọc/ghi đang đi. –

+1

Tại sao nó lưu trữ bất cứ điều gì dưới 'HKEY_LOCAL_MACHINE'? Tôi hy vọng nó sẽ sống dưới ['HKEY_CURRENT_USER'] (http://en.wikipedia.org/wiki/Windows_Registry#HKEY_CURRENT_USER_.28HKCU.29). Ngoài ra: tại sao bạn quan tâm? Nó không có giấy tờ vì một lý do: bạn không nên dựa vào nó và nó có thể thay đổi bất cứ lúc nào. –

+0

phải có: btw bạn có đang chạy với tư cách quản trị viên không? – bestsss

Trả lời

20

cho systemroot: HKEY_LOCAL_MACHINE \ SOFTWARE \ JavaSoft ...

cho userRoot: HKEY_CURRENT_USER \ SOFTWARE \ JavaSoft ...

+0

Bạn đã xác nhận điều này chưa? ví dụ: Sử dụng mã trên và sau đó kiểm tra đăng ký của bạn? Nó không hiển thị trong regedit cho tôi. – javamonkey79

+0

kiểm tra điều này? http://msdn.microsoft.com/en-us/library/aa965884%28v=vs.85%29.aspx – bestsss

+0

Vâng, điều này có vẻ giống như một lời giải thích hợp lý. Tuy nhiên, tôi không thể tìm thấy chìa khóa ở các vị trí ảo. Hmm ... – javamonkey79

45

Họ đang được sử dụng hiện tại: HKEY_CURRENT_USER\Software\JavaSoft\Prefs

+0

Bạn đã xác nhận điều này chưa? ví dụ: Sử dụng mã trên và sau đó kiểm tra đăng ký của bạn? Nó không hiển thị trong regedit cho tôi. – javamonkey79

+0

Cài đặt người dùng nằm dưới HKCU, cài đặt hệ thống trong HCKS (trừ khi bạn ghi đè lên bằng các biến hệ thống). Các con đường trên cửa sổ 64bit với 32bit java tuy nhiên là dưới WoW64 như trả lời ở trên. – eckes

+0

Vẫn hoạt động trên Windows 10. +1 – JCoder

13

Tôi đã có một vấn đề tương tự khi tôi làm việc với các tùy chọn systemRoot và với sự giúp đỡ của một màn hình đăng ký tôi phát hiện ra rằng vị trí mà chúng được lưu trữ thay đổi tùy thuộc vào hệ điều hành Windows là 32-bit hay 64-bit.

Theo hệ điều hành 32bit (Windows XP trong trường hợp của tôi) con đường systemroot registry là

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs

Theo hệ điều hành 64bit (Windows 7 trong trường hợp của tôi) con đường systemroot registry là

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Prefs

Cùng một JRE 32 bit (JRE 1.6.0_20-b02) được sử dụng trên cả hai hệ thống.

Khi chạy ứng dụng 32 bit (JVM) trên cửa sổ 64 bit, đăng ký sẽ tự động chèn phần tử đường dẫn Wow6432Node để cho phép các ứng dụng được biên dịch cho 32 bit hoặc 64 bit để cùng tồn tại trên cùng một máy trong khi vẫn giữ riêng cài đặt của chúng.

+0

trên windows 7 64-bit Tôi không thấy bất kỳ phần mềm nào trong HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ JavaSoft nhưng tôi thấy chúng ở HKEY_CURRENT_USER \ Software \ JavaSoft \ Prefs – sdjuan

1

Một số tùy chọn được lưu trữ trong khóa đăng ký, trong khi một số tùy chọn khác (bây giờ tôi sẽ kiểm tra chính xác biểu tượng nào) dường như được lưu trữ trong tệp văn bản; ví dụ, sở thích "Sử dụng giấy chứng nhận và các phím trong keystore trình duyệt" được lưu trữ trong 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= 

này được xác minh trên Windows 7 pro/32 bit - JRE 1.7.0_60 (i586)

nguồn:
Related question on this site
Oracle - Java SE documentation - Deployment Configuration File and Properties

Have a nice day

+2

Đó có lẽ là một " tệp thuộc tính "được quản lý bằng' java.util.Properties', một API cơ bản được giới thiệu trong Java 1.0. Chủ đề của câu hỏi là API Preferences, một cơ chế phức tạp hơn được giới thiệu trong Java 1.4. Tuy nhiên, mỗi khu vực đều có khả năng ứng dụng riêng. –

Các vấn đề liên quan