特定の exe/dll がどのインストーラー パッケージに属しているかを確認する方法

特定の exe/dll がどのインストーラー パッケージに属しているかを確認する方法

特定の dll または exe をシステムにインストールした MSI を知りたいです。Windows では、削除されたファイルがインストール済みパッケージに属する場合、そのファイルが修正されることは知っています。実際にファイルを削除せずに、その情報を照会できますか? ファイルが属するパッケージを確認するツールまたは Win32 API はありますか?

答え1

どうやら、何か方法があるようです! 最近、次のサブツリーの下に Windows インストーラーによってインストールされたファイルのレジストリ エントリを発見しました。

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

そこに保存されている情報を使用してファイルのインストーラーを検索する小さな Python スクリプトを作成しました。

> 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

こちらから入手可能です:https://github.com/Zero3/windows-installer-file-search

答え2

もしあなたが、干し草の山からもっともらしい針を探すだけでいいのなら、7-ジップ働くでしょう:

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

次に、needlelist.txt任意のテキスト エディターで開いて検索するneedlename.dllと、7-Zip によって生成されたリスト内に対応する .msi パッケージが見つかります。

(注: この方法は、 という名前のファイルが含まれている .msi パッケージを示すだけなので、「ダーティ」ですneedlename.dll。ただし、ほとんどのユースケースではおそらく問題ありません。)

関連情報