jueves, abril 17, 2008

Usar el Registro de Windows con java Preferences

Aquí publico una buena entrada en el blog para plasmar como hacer unas de las curiosidades que siempre he tenido, como usar el registro de windows en mis programas.

Básicamente me remito a plasmar un código de ejemplo que hice basándome en otro que encontré por internet. No creo que haga falta en este punto explicar nada, ya que me preocupe de comentar bastante el código y poco más puedo añadir.

Bueno chao y asta la próxima… que será dentro de poco.

Código del ejemplo.

import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;

/* Autor: Nauzet
* Esto un ejemplo de como usar la Clase Preferences de java.util.prefs y
* dando algunos datos de como se usa.
* El ejemplo consta de como leer y escribir en el registro de windows y como
* hacer algunas comprobaciones.
* */

public class Main
{

public static void main(String[] args) {
try {

/*La variable Mipref es un nodo del registro de windows, que esta representado
* como un arbol de directorio. En este punto con userRoot le asignamos la raiz
* del arbol de HKEY_CURRENT_USER\Software\JavaSoft\Prefs . Ojo que con esta
* Clase no nos da la raiz del arbol de usuario del registro (HKEY_CURRENT_USER)
* sino que nos da un nodo al partir podemos trabajar… supongo que es
* filosofía de java.
*
* Si queremos usar el arbol de nodos de la maquina local (HKEY_LOCAL_MACHINE)
* debemos usar .systemRoot() en vez de useRoot().
*/
Preferences Mipref = Preferences.userRoot();

/* Con el metodo node, le asignamos la ruta de registro a la que queremos
* acceder o escribir. Solo decir que si la ruta pasada a node no esta, la crea.
* la ruta tiene que empezar por / y estar escrita en minuscula, para que no
* haya fallos al crear la ruta.
*/

Mipref = Mipref.node(”/software/atlas/egeasy/egoffice/miclave”);

/* Se hace con isUserNode la comprocacion de que el nodo este en el arbol
* HKEY_CURRENT_USER name() nos devuelve el nombre de la clave (nodo) en el que
* estamos. Esto no es necesario, pero esto es un ejemplo de uso.
*/
if (Mipref.isUserNode()) {
System.out.println(”isUserNode” + “:” + Mipref.name() );
}

/* absolutePath(), nos devuelve el nombre de la clave y su ruta absoluta.
* Ej.: /software/atlas/egeasy/egoffice/miclave */
System.out.println(”La ruta absoluta :” + Mipref.absolutePath());

/*nodeExists(), comprobamos que una clave (nodo) existe.
*/
if (Mipref.nodeExists(”/software/atlas/egeasy/egoffice/miclave”)) {

System.out.println(”SI Existe el nodo con nodeExists”);
System.out.println(”El name :”+Mipref.name());

/* get(), nos devulve el valor que contiene la variable dentro de la clave
* (nodo) a la que tenemos asignada la variable Mipref. Para el metodo get(),
* tenemos que pasar el nombre de la variable a la que qeremos acceder y como
* segundo parametro, una string que nos devolverá sino encuentra esa variable.
* Nota en un nodo pueden haber muchas variables, lo que contiene un nodo lo
* llamo variable por que no estoy seguro de como se llama.
*/
System.out.println(Mipref.get(”javamio”, “No se encuentra”));
}else
System.out.println(”No existe el nodo con nodeExists”);

/* put(), le pasamos el nombre de la variable y el valor que queremos que
* tenga asignado ese registro. Se lo debemos pasar en minuscula por que si le
* pasaramos MiNuevoValor, el resultado que observariamos en el regedit de
* windows sería: /Mi/Nuevo/Valor
*/
Mipref.put(”javamio”, “minuevovalor”);

} catch (BackingStoreException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}

}

}

4 comentarios:

Anónimo dijo...

hola, necesito lo de implementar o usar el registro con java para vlaidar un software, algo asi como que si no tienen esa licencia o ese key pues PELAS y que me tengan que llamar, espero haberme explicado el codigo que pasaste no me compila marca varios errores ojala puedas ayudarme mi mail es torrhes@hotmail.com saludos, muy buenos tus programas.

Anónimo dijo...

Gracias, tuyo código fue de muy ayuda. 100% correto.

Ariel dijo...

Excelente me salvaste la vida!! Realmente valoro muchos a las personas como vos que se toman su tiempo para compartir este tipo de cosas.
Mil Gracias.

Anónimo dijo...

Muchas gracias, me sirvio de mucho, que va, ojala ubiera muchas personas como tu, que no se quedan con el conocimiento, que lo comparte.