Entwickler-Ecke

Dateizugriff - Installationspfade von installierter Software auslesen


Logikmensch - Di 19.01.10 07:33
Titel: Installationspfade von installierter Software auslesen
Scheint schwieriger zu sein, was ich da vorhabe.

Ich habe vor, die Installationspfade (sprich: Die Aufrufziele der EXEs) von für mich interessanten Programmen über die Registry auszulesen. Soll auch auf Win98, XP und Vista funzen.

Im Schlüssel HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
stehen zwar die Einträge drin, die auch über Systemsteuerung/Software ausgelesen werden können, aber der Wert InstallSource ist bei vielen Einträgen leer, so dass ich also nicht immer rauskriege, wo steht das Programm eigentlich.

Gibt es noch einen anderen Weg als die gesamte Festplatte nach bekannten EXEs abzusuchen?

Bei XP habe ich im Schlüssel HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache
zwar eine sehr schöne Liste mit den Programmnamen und ihren Aufrufen, aber das Wort Cache sagt implizit ja schon aus, dass das keine verlässliche Liste ist - ich nehme an, dass die nicht langzeitstabil ist.

Weiß jemand Rat, der sowas schon mal gemacht hat? Ich brauche lediglich den richtigen Ansatz, keine fertige Lösung. ;-)


jaenicke - Di 19.01.10 08:41

Es gibt noch Listen von vorhandenen DLLs (und evtl. auch Exe-Dateien, weiß ich grad nicht), bei denen Windows diese quasi angemeldet werden. Ich müsste selbst einmal in der Registry suchen wo genau das war. Aber darüber lässt sich vielleicht auch etwas finden.
Und dann gibts noch eine Liste der Anwendungen, ich glaube dort:

Quelltext
1:
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths                    


Logikmensch - Do 21.01.10 07:03

Danke für den Tipp. Einige Anwendungen schreiben nach dem Installieren tatsächlich unter ...\App_Paths was rein. Aber leider ist es nicht immer so.

Leider musste ich nach dem Installieren (Installshield) einer von mir geschriebenen Anwendung feststellen, dass ich in der gesamten Registry den Dateinamen der EXE eigentlich nur an ganz wenigen Stellen wiederfinde. Und diese Stellen sind auf meinem XP-System:
HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Userdata\S-1-5...\Components\<Hexziffer>
HKEY_USERS\S-1-5...\Software\Microsoft\Windows\ShellNoRoam\MUICache

Der MUICache (was auch immer das ist) sieht ja ganz gut aus - dort finden wir die Aufrufpfade und die Namen der Anwendungen hübsch gelistet. Aber ich weiß nicht, wie verlässlich dieser Cache tatsächlich ist, um ihn generell auszulesen.
Caches haben die Eigenschaft, flüchtig zu sein. ;-)

Bleibt die Frage offen, woher wissen die ganzen Uninstaller dann, wo ihr Programm installiert wurde?

Nachtrag: Ich habe noch HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CurrentVersion\Installer\Folders
gefunden. Mal schauen, ob das auch bei älteren Betriebssystemen verwendet wird.


jaenicke - Do 21.01.10 19:05

user profile iconLogikmensch hat folgendes geschrieben Zum zitierten Posting springen:
Bleibt die Frage offen, woher wissen die ganzen Uninstaller dann, wo ihr Programm installiert wurde?
Dafür haben die meisten Uninstaller eine entsprechende Datenbank bzw. Datendatei, in der genau steht was bei der Installation gemacht wurde.


Logikmensch - Di 26.01.10 07:07

Okay, danke für die Info. Ich bin mir mittlerweile auch sicher, dass es sich so verhält. Schade, naja. Dann nutze ich halt das, was zur Verfügung steht, auch wenn es nicht gerade viel ist. Trotzdem danke!!!