2009-02-25 15 views

Respuesta

5

Recomendaría el Java Native Access (JNA) library. Es una muy buena envoltura alrededor de JNI. De acuerdo con this mailing list post, ya tienen un contenedor contribuido alrededor de las llamadas de función de registro nativas de Windows.

Si agrega las bibliotecas JNA a su proyecto, the relevant source you'll want is the Registry.java class. A partir de ahí, solo llame a los métodos de esa clase para investigar el registro de Windows.

Como nota al margen, cuando utiliza JNA, asegúrese de utilizar Platform.isXxx() para asegurarse de que su código pueda realmente consultar el registro en la plataforma en particular.

2

Un ejemplo será la siguiente:

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 clase Preferences es la forma preferida de Java de escribir en el registro. Sin embargo, en realidad no lo he usado, así que no sé si permite el acceso a todo el registro o solo a una sección específica de la JVM o su aplicación. Si no es así, entonces parece que para su propósito necesitará ver las soluciones de JNI propuestas por otros aquí. Si funciona, entonces tienes un método independiente de la plataforma para almacenar tu configuración si alguna vez la portas.

+0

Solo permite una pieza específica única para su aplicación. – boutta

+1

El hecho de que Preferences use el Registro en sistemas Windows es solo un detalle de implementación: Preferences NO es una API de registro. –

Cuestiones relacionadas