# Installierte Programme ermitteln



## DominikF (13. Februar 2008)

Erstmal, hallo alle zusammen! 

Ich möchte eine Klasse schreiben die automatisch ermittelt, ob und wo bestimmte Programme auf einem Rechner installiert sind, um sie anschließend aus einer Java-Application heraus starten zu können. Die Java-Application muss nur unter Windows XP/Vista ablauffähig sein.

Grundfrage:
Wie kann man unter Java ermitteln welche Programme auf einem Rechner installiert sind?

Mögliche Ansätze?!
Auslesen der Daten aus der Registry
Durchsuchung des kompletten Dateisystems

Probleme:
Nicht alle Programme tragen sich in der Registry ein.
Eine komplette Durchsuchung des Dateisystems ist Zeitaufwendig.

Weitere Fragen:
Kennt irgendjemand vielleicht eine einfache, zeitunaufwendige Möglichkeit um das Problem zu lösen?
Gibt es vielleicht eine C/C++-Funktion die man über das JNI einbinden könnte?
Führt Windows irgendeine Art von Liste über alle installierten Programme?

MFG Dominik


----------



## MeinerEiner_80 (13. Februar 2008)

Moin!
Alle Listen, welche Windows führt, werden ihren Ursprung sicher in der Registry haben.
Deswegen  würde ich auch beim Ermitteln  die Registry durchsuchen  (beispielsweise damit :https://sourceforge.net/projects/jregistrykey) oder nativ :http://www.trustice.com/java/jnireg/

Die einzige Liste, welche mir überhaupt so auf Anhieb einfällt, werde diese, welche man auch in der Software Übersicht zu sehen bekommt.. : 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

*grüssle*
MeinerEiner


----------



## Anime-Otaku (13. Februar 2008)

DominikF hat gesagt.:


> Erstmal, hallo alle zusammen!
> Führt Windows irgendeine Art von Liste über alle installierten Programme?
> 
> MFG Dominik



Ja...die die man unter Software in der Systemsteuerung finden kann...

Alle exe Dateien suchen ist sicherlich nicht sinnvoll...da nicht jede Exe ein gewolltes Programm ist und schon garnicht viel über das Programm aussagt.

Daher wird dir nichts anderes übrig bleiben als die registry durchzugehen....
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

http://www.tutorials.de/forum/java/176760-windows-registry-lesen-schreiben-mit-java.html

verdammt zu langsam^^


----------



## DominikF (13. Februar 2008)

Danke für die Hinweise!

Der Key löst zumindest schon mal eine Teil des Problems, abgesehen von den Programmen, die sich dort nicht eintragen z.B. Jar-Dateien
Die Bibliothek registrykey kannte ich noch nicht. Sie sieht auf den ersten Blick sehr gut aus. 

EDID: Auf den zweiten Blick auch! Funktioniert einwandfrei.


----------

