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) :
- Télécharger le .jar librairie JavaRegistryWrapper
- 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 )
- 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); } }
Ça sent le andrhome!
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 🙂
<?php
for($i=0;$i
le probleme c ke ça ne marche pas :p
Pas compris 🙂
Cool !