Comment est-il possible de lire/écrire dans le registre de Windows en utilisant java ?
Réponses
Trop de publicités?L'approche de l'API Préférences ne vous donne pas accès à toutes les branches du registre. En fait, elle ne vous donne accès qu'à l'endroit où l'API des préférences stocke ses, eh bien, préférences. Il ne s'agit pas d'une API générique de gestion du registre, comme l'API .NET
Pour lire/écrire chaque clé, je suppose que JNI ou un outil externe serait l'approche à adopter, comme le montre Mark.
Vous pouvez essayer WinRun4J . Il s'agit d'un lanceur et d'un hôte de services java pour Windows, mais il fournit également une bibliothèque pour accéder au registre.
(en fait, je travaille sur ce projet, alors faites-moi savoir si vous avez des questions).
Ma précédente modification de la réponse de @David a été rejetée. Voici quelques informations utiles à ce sujet.
Cette "magie" fonctionne parce que Sun implémente le système Preferences
pour Windows dans le cadre du JDK, mais elle est paquet privé . Certaines parties de l'implémentation utilisent JNI.
- Package classe privée du JDK
java.util.prefs.WindowsPreferences
: http://grepcode.com/file/repository.grepcode.com/java/Root/jdk/openjdk/7-b147/java/util/prefs/WindowsPreferences.java - JNI : http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/9b8c96f96a0f/src/Windows/native/java/util/WindowsPreferences.c
L'implémentation est sélectionnée au moment de l'exécution à l'aide d'une méthode d'usine ici : http://grepcode.com/file/repository.grepcode.com/java/Root/jdk/openjdk/7-b147/java/util/prefs/Preferences.java#Preferences.0factory
La vraie question : Pourquoi OpenJDK n'expose pas cette API au public ?
Encore une autre bibliothèque...
https://code.google.com/p/java-registry/
Celui-ci lance reg.exe sous le manteau, en lisant/écrivant dans les fichiers temporaires. Je n'ai pas fini par l'utiliser, mais elle semble être une implémentation assez complète. Si je l'utilisais, je pourrais m'y plonger et ajouter une meilleure gestion des processus enfants.
La démo de WinPack a le Registry Viewer est implémenté à titre d'exemple.
Vérifiez à http://www.jniwrapper.com/winpack_features.jsp#registry
BTW, WinPack a été déplacé à l'adresse suivante :
http://www.teamdev.com/jniwrapper/winpack/
comment écrire des services Windows en java
WinPack prend également en charge la gestion des services Windows : http://www.teamdev.com/jniwrapper/winpack/#services