2009-02-25 7 views

Répondre

5

Je recommanderais le Java Native Access (JNA) library. C'est une jolie enveloppe autour de JNI. Selon this mailing list post, ils ont déjà un wrapper contribué autour des appels de fonction de registre Windows natifs.

Si vous ajoutez les bibliothèques JNA à votre projet, the relevant source you'll want is the Registry.java class. De là, il suffit d'appeler des méthodes sur cette classe pour étudier le registre Windows.

En note, assurez-vous que lorsque vous utilisez JNA, vous utilisez Platform.isXxx() pour vous assurer que votre code peut réellement interroger le registre sur la plate-forme en question.

2

Un exemple sera comme ceci:

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

La classe Preferences est le moyen préféré de Java écrit au Registre. Cependant, je ne l'ai pas réellement utilisé, donc je ne sais pas si cela permet d'accéder au registre entier ou juste à une section spécifique à la JVM ou à votre application. Si ce n'est pas le cas, alors il semble que pour votre but, vous aurez besoin de regarder les solutions JNI posées par d'autres ici. Si cela fonctionne, vous disposez d'une méthode indépendante de la plate-forme pour stocker vos paramètres si vous les avez déjà portés.

+0

Permet uniquement une partie spécifique unique pour votre application. – boutta

+1

Le fait que Preferences utilise le registre sur les systèmes Windows n'est qu'un détail d'implémentation - Preferences n'est PAS une API de registre. –

Questions connexes