Java ist auch eine Insel

Freitag, Juli 20, 2007

Inselupdate: Zugriff auf die gesamte Windows-Registry

Wird Java unter MS Windows ausgeführt, so ergibt sich hin und wieder die Aufgabe, Eigenschaften der Windows-Umgebung zu kontrollieren. Viele Eigenschaften des Windows-Betriebssystems sind in der Registry versteckt, und Java bietet als plattformunabhängige Sprache keine Möglichkeit, diese Eigenschaften in der Registry auszulesen oder zu verändern. (Die Schnittstelle java.rmi.registry.Registry ist eine Zentrale für entfernte Aufrufe und hat mit der Windows-Registry nichts zu tun. Auch das Paket java.util.prefs mit der Klasse Preferences erlaubt nur Modifikationen an einem ausgewählten Teil der Windows-Registry.)

Um von Java auf alle Teile der Windows-Registry zuzugreifen, gibt es mehrere Möglichkeiten, unter anderem:

  • Windows Registry API Native Interface (http://tutego.com/go/jnireg), die frei zu benutzen ist und keiner besonderen Lizenz unterliegt.
  • http://www.cogentlogic.com/jndi/ einen JNDI Service Provider for Windows Registries für teure 299 kanadische Dollar.
  • Preferences unter Windows realisiert: java.util.prefs.WindowsPreferences. Damit ist keine zusätzlich native Implementierung – und damit eine Windows DLL im Klassenpfad – nötig. Die Bibliothek https://sourceforge.net/projects/jregistrykey/ realisiert eine solche Lösung.
  • reg zum Setzen und Abfragen von von Schlüsselwerten.

Beispiel   Zeigen den Dateinamen für den Desktop-Hintergrund an:

$ reg query "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper

! REG.EXE VERSION 3.0

HKEY_CURRENT_USER\Control Panel\Desktop

Wallpaper REG_SZ C:\Dokumente und Einstellungen\tutego\Anwendungsdaten\Hintergrund.bmp

AddThis Social Bookmark Button

2 Comments:

  • (Ich hab kein passendes Thema gefunden also hab ich einfach ans Ende geschrieben, hoffe das ist kein Problem) Ich bin ganz neu in Java und
    möchte jetzt als Folge einer Wahren Aussage in if eine andere Java Application starten. Können sie mir eine einfache Möglichkeit nennen.

    By Anonymous Anonym, at Dezember 26, 2007 10:14 PM  

  • Soll die Java-App als neuer Prozess gestartet werden? Dann geht das so wie unter http://www.tutego.com/wiki/doku.php?id=javastdlib beschrieben. Wenn es nicht als eigener Prozess gestartet werden soll, dann einfach Klasse im Klassenpfad einbinden und Klasse mit Klasse.main(args) aufrufen.

    By Blogger Christian Ullenboom, at Januar 04, 2008 5:44 PM  

Kommentar veröffentlichen

<< Home