特定のdllまたはexeをシステムにインストールしたMSIを知りたいのですが。インストールされたパッケージに属している場合、Windowsは削除されたファイルを修正することを知っています。実際にファイルを削除せずにその情報を照会できますか?ファイルがどのパッケージに属しているかを確認するためのツールまたはWin32APIはありますか?
やっぱり道があるようです!最近、次のサブツリーの下に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-Zip のこの迅速で汚い乱用はうまくいくでしょう:
7z.exe l -an -air!C:\Windows\Installer\*.msi > needlelist.txt
次に、任意のテキストエディタでneedlelist.txt
を開き、needlename.dll
を検索すると、7-Zipによって生成されたリストに対応する.msiパッケージが見つかります。
(注:このメソッドは、needlename.dll
という名前のファイルを含む.msiパッケージを通知するだけなので、「ダーティ」です。ただし、ほとんどのユースケースではおそらく問題ありません。)