So finden Sie heraus, zu welchem ​​Installationspaket eine bestimmte EXE/DLL gehört

So finden Sie heraus, zu welchem ​​Installationspaket eine bestimmte EXE/DLL gehört

Ich möchte wissen, welches MSI eine bestimmte DLL oder EXE auf meinem System installiert hat. Ich weiß, dass Windows gelöschte Dateien repariert, wenn sie zu einem installierten Paket gehören. Kann ich diese Informationen abfragen, ohne die Datei tatsächlich zu löschen? Gibt es ein Tool oder eine Win32-API, um zu überprüfen, zu welchem ​​Paket eine Datei gehört?

Antwort1

Es scheint, als ob es doch einen Weg geben könnte! Ich habe kürzlich Registrierungseinträge für von Windows Installern installierte Dateien unter dem folgenden Unterbaum entdeckt:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

Ich habe ein kleines Python-Skript geschrieben, um im Installationsprogramm anhand der dort gespeicherten Informationen nach einer Datei zu suchen:

> python windows-installer-file-search.py opus.dll
File: C:\Program Files (x86)\Mumble\opus.dll
Product: Mumble 1.2.13
Install user: S-1-5-18
Cached installer: C:\Windows\Installer\2f6b072.msi

Es ist hier verfügbar:https://github.com/Zero3/windows-installer-file-search

Antwort2

Wenn Sie damit zufrieden sind, nur plausible Nadeln im Heuhaufen zu finden, dieser schnelle und schmutzige Missbrauch von7-Zipwird funktionieren:

7z.exe l -an -air!C:\Windows\Installer\*.msi > needlelist.txt

Öffnen Sie es dann needlelist.txtin einem beliebigen Texteditor, suchen Sie danach needlename.dllund Sie werden das entsprechende .msi-Paket in den von 7-Zip generierten Listen finden.

(Hinweis: Diese Methode ist „schmutzig“, da sie Ihnen nur sagt, welche .msi-Pakete eine Datei mit dem Namen enthalten needlename.dll. Für die meisten Anwendungsfälle ist sie aber wahrscheinlich ausreichend.)

verwandte Informationen