339 Stimmen

Lesen/Schreiben in der Windows-Registrierung mit Java

Wie ist es möglich, die Windows-Registrierung mit Java zu lesen/schreiben?

5voto

Tom Anderson Punkte 44661

Wie bereits erwähnt, verwendet die Preferences API die Registry, um Einstellungen zu speichern, kann aber nicht für den Zugriff auf die gesamte Registry verwendet werden.

Ein Pirat namens David Croft hat jedoch herausgefunden, dass es möglich ist, Methoden in Suns Implementierung der Preferences API zu verwenden, um Lesen der Windows-Registrierung von Java aus ohne JNI . Das birgt einige Gefahren in sich, aber es ist einen Blick wert.

5voto

Ignat Punkte 51

Es gibt nur wenige JNDI-Dienstanbieter, die mit der Windows-Registrierung arbeiten.

Man könnte beobachten http://java.sun.com/products/jndi/serviceproviders.html .

4voto

Vinko Vrsalovic Punkte 252104

Mit dem Ansatz der Einstellungs-API haben Sie keinen Zugriff auf alle Zweige der Registrierung. Vielmehr erhalten Sie nur Zugriff auf den Ort, an dem die Einstellungs-API ihre, nun ja, Einstellungen speichert. Es handelt sich nicht um eine allgemeine API für die Handhabung der Registry, wie die von .NET

Um jeden Schlüssel zu lesen/schreiben, wäre wohl JNI oder ein externes Tool der richtige Ansatz, wie Mark zeigt.

3voto

Peter Smith Punkte 743

Sie könnten versuchen WinRun4J . Dies ist ein Windows Java Launcher und Service Host, aber es bietet auch eine Bibliothek für den Zugriff auf die Registry.

(btw ich arbeite an diesem Projekt, also lassen Sie es mich wissen, wenn Sie irgendwelche Fragen haben)

3voto

kevinarpe Punkte 18905

Meine vorherige Bearbeitung der Antwort von @David wurde abgelehnt. Hier sind einige nützliche Informationen dazu.

Dieser "Zauber" funktioniert, weil Sun die Preferences Klasse für Windows als Teil des JDK, aber es ist Paket privat . Teile der Implementierung verwenden JNI.

Hier wird die Implementierung zur Laufzeit über eine Factory-Methode ausgewählt: http://grepcode.com/file/repository.grepcode.com/java/Root/jdk/openjdk/7-b147/java/util/prefs/Preferences.java#Preferences.0factory

Die eigentliche Frage: Warum stellt OpenJDK diese API nicht der Öffentlichkeit zur Verfügung?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X