web-dev-qa-db-ja.com

特定のexe / dllが属するインストーラーパッケージを見つける方法

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

11
wigy

やっぱり道があるようです!最近、次のサブツリーの下に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

7
Zero3

干し草の山からもっともらしい針を見つけるだけで大​​丈夫なら、 7-Zip のこの迅速で汚い乱用はうまくいくでしょう:

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

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

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

6
Zero3