2009-02-25 60 views

Trả lời

5

Tôi muốn giới thiệu Java Native Access (JNA) library. Đó là một wrapper khá đẹp xung quanh JNI. Theo số this mailing list post, họ đã có một trình bao bọc được đóng góp xung quanh các cuộc gọi hàm Windows registry nguyên bản.

Nếu bạn thêm thư viện JNA vào dự án của mình, the relevant source you'll want is the Registry.java class. Từ đó, chỉ cần gọi phương thức trên lớp đó để điều tra sổ đăng ký Windows.

Là một lưu ý phụ, hãy đảm bảo khi bạn sử dụng JNA bạn sử dụng Platform.isXxx() để đảm bảo mã của bạn thực sự có thể truy vấn sổ đăng ký trên nền tảng cụ thể.

2

Một ví dụ sẽ là như thế này:

import com.ice.jni.registry.*; 

public class DeleteEnvironmentVar{ 
public DeleteEnvironmentVar(String variable, String value) throws Exception { 

     RegistryKey machine = Registry.getTopLevelKey("HKEY_LOCAL_MACHINE"); 
     RegistryKey environment = machine.openSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", RegistryKey.ACCESS_WRITE); 
     try { 
      if (value == null) { //Delete the variable in case value is empty 
       environment.deleteValue(variable); 
      }    
     } 
     catch(NoSuchValueException nsve) {} 
     catch(NoSuchKeyException nske) {}   
    } 
} 
1

Lớp Preferences là Java cách ưa thích của văn bản cho đăng ký. Tuy nhiên, tôi đã không thực sự sử dụng nó, vì vậy tôi không biết nếu nó cho phép truy cập vào toàn bộ registry hoặc chỉ một phần cụ thể cho JVM hoặc ứng dụng của bạn. Nếu không, sau đó nó âm thanh như cho mục đích của bạn, bạn sẽ cần phải nhìn vào các giải pháp JNI đặt ra bởi những người khác ở đây. Nếu nó hoạt động, sau đó bạn có một phương pháp độc lập nền tảng để lưu trữ các cài đặt của bạn nếu bạn đã từng chuyển nó.

+0

Chỉ cho phép một phần cụ thể duy nhất cho ứng dụng của bạn. – boutta

+1

Thực tế là Preferences sử dụng Registry trên các hệ thống Windows chỉ là một chi tiết thực hiện - Preferences không phải là một API đăng ký. –

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