Snippet #4 ~ Modifier des clé de registre Windows en JAVA

Java ne comprend aucune librairie native permettant de manipuler les clé de registre de windows, normal, Java c’est portable, les clé de registre c’est typiquement windows.

Donc je suis contraint de passer par un vieux .reg ou un dll tous pourris?

Hé bien non ! Certaines librairies en pur Java existent pour manipuler les clé de registre, il en existe 3 ou 4, personnellement j’utilise celle qui me parais la plus simple et rapide d’utilisation : JavaRegistryWrapper.

Voiçi un exemple d’utilisation permettant de lancer automatiquement votre programme au demarrage de windows (et ceci en créant une valeur sur la clé de registre HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run) :

 

  1. Télécharger le .jar librairie JavaRegistryWrapper
  2. Inclure le jar dans le buildpath du projet (sous eclipse : clic droit sur le projet > Build path>configure build path>onglet libraries>add External Jar )
  3. On peux faire péter le code :
package fr.idleman.example;

import org.snipecode.reg.RegUtil;

public class Registre {

	public static String get(String chemin,String clef)
	{
		String valeur = null;
		int handle = RegUtil.RegOpenKey(RegUtil.HKEY_CURRENT_USER, chemin,RegUtil.KEY_ALL_ACCESS)[RegUtil.NATIVE_HANDLE];
		byte[] val = RegUtil.RegQueryValueEx(handle, clef);

		if(null!=val){
			valeur = new String(val).toString().trim();
		}
		RegUtil.RegCloseKey(handle);
		return valeur;
	}

	public static void set(String chemin,String clef,String valeur)
	{
		int handle = RegUtil.RegOpenKey(RegUtil.HKEY_CURRENT_USER, chemin,RegUtil.KEY_ALL_ACCESS)[RegUtil.NATIVE_HANDLE];
		RegUtil.RegSetValueEx(handle, clef, valeur);
		RegUtil.RegCloseKey(handle);
	}

	public static void create(String chemin,String clef,String valeur)
	{
		int handle = RegUtil.RegCreateKeyEx(RegUtil.HKEY_CURRENT_USER, chemin)[RegUtil.NATIVE_HANDLE];
		RegUtil.RegCloseKey(handle);
		handle = RegUtil.RegOpenKey(RegUtil.HKEY_CURRENT_USER, chemin,RegUtil.KEY_ALL_ACCESS)[RegUtil.NATIVE_HANDLE];
		RegUtil.RegSetValueEx(handle,clef,valeur);
		RegUtil.RegCloseKey(handle);

	}

}
Une fois votre classe de gestion des Registre créé, vous pouvez créer votre Main :
package fr.idleman.example;
import org.snipecode.reg.RegUtil;
import fr.idleman.example.Registre;
public class Principal {
 public static void main (String[] args){
//Creer la clé
Registre.create("Software\\Microsoft\\Windows\\CurrentVersion\\Run","ExampleProgramme", "c:\\ExampleProgramme.exe");
//Modifier la clé
Registre.set("Software\\Microsoft\\Windows\\CurrentVersion\\Run","ExampleProgramme", "d:\\NewPath\\ExampleProgramme.exe");
//Recuperer la clé
String valeurChemin = Registre.get("Software\\Microsoft\\Windows\\CurrentVersion\\Run","ExampleProgramme");
System.out.println("Le chemindu programme est : "+valeurChemin);
}
}

5 réactions au sujet de « Snippet #4 ~ Modifier des clé de registre Windows en JAVA »

    • Idleman Auteur ArticleRéponse

      Techniquement non, ça viens de Icb, un virus java que je m’était amusé a concevoir, mais j’ai effectivement utilisé le même code dans andrhome pour le démarrage windows 🙂

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.