2009-02-25 14 views

Odpowiedz

5

Polecam Java Native Access (JNA) library. To całkiem ładne opakowanie JNI. Zgodnie z this mailing list post, mają już załączony wrapper wokół natywnych wywołań funkcji rejestru systemu Windows.

Jeśli dodasz biblioteki JNA do swojego projektu, the relevant source you'll want is the Registry.java class. Stamtąd, po prostu wywołaj metody tej klasy, aby zbadać rejestr systemu Windows.

Na marginesie, upewnij się, że podczas korzystania z JNA korzystasz z platformy Platform.isXxx(), aby upewnić się, że Twój kod może rzeczywiście wywoływać rejestr w danej platformie.

2

Przykładem będzie tak:

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

Klasa Preferences jest Java preferowany sposób zapisu do rejestru. Jednak tak naprawdę go nie używałem, więc nie wiem, czy umożliwia dostęp do całego rejestru, czy tylko do sekcji specyficznej dla JVM lub aplikacji. Jeśli tak nie jest, to brzmi jak dla twojego celu, będziesz musiał spojrzeć na rozwiązania JNI założone przez innych tutaj. Jeśli to działa, to masz niezależną od platformy metodę przechowywania ustawień, jeśli kiedykolwiek ją przesyłasz.

+0

Pozwala tylko na określoną część unikatową dla danej aplikacji. – boutta

+1

Fakt, że Preferencje używa Rejestru w systemach Windows jest tylko szczegółem implementacji - Preferencje NIE są API rejestru. –

Powiązane problemy