2009-02-25 3 views

Antwort

5

Ich würde die Java Native Access (JNA) library empfehlen. Es ist eine ziemlich nette Hülle um JNI. Laut this mailing list post haben sie bereits einen bereitgestellten Wrapper für die systemeigenen Windows-Registrierungsfunktionsaufrufe.

Wenn Sie die JNA-Bibliotheken zu Ihrem Projekt hinzufügen, the relevant source you'll want is the Registry.java class. Rufen Sie von dort Methoden für diese Klasse auf, um die Windows-Registrierung zu untersuchen.

Als eine Randnotiz, stellen Sie sicher, wenn Sie JNA verwenden, dass Sie Platform.isXxx() verwenden, um sicherzustellen, dass Ihr Code tatsächlich die Registrierung auf der bestimmten Plattform abfragen kann.

2

Ein Beispiel wird so aussehen:

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

Die Preferences Klasse ist die Java bevorzugte Art und Weise in die Registrierung zu schreiben. Ich habe es jedoch nicht verwendet, daher weiß ich nicht, ob es den Zugriff auf die gesamte Registrierung oder nur auf einen bestimmten Bereich der JVM oder Ihrer Anwendung erlaubt. Wenn dies nicht der Fall ist, dann klingt es nach Ihrem Zweck, Sie müssen sich die JNI-Lösungen ansehen, die hier von anderen gesetzt wurden. Wenn es funktioniert, haben Sie eine plattformunabhängige Methode, Ihre Einstellungen zu speichern, wenn Sie sie jemals portieren.

+0

Nur für ein bestimmtes Teil, das für Ihre Anwendung eindeutig ist. – boutta

+1

Die Tatsache, dass Voreinstellungen die Registrierung auf Windows-Systemen verwendet, ist nur ein Implementierungsdetail - Voreinstellungen sind KEINE Registrierungs-API. –