如何找出給定的 exe/dll 屬於哪個安裝程式包

如何找出給定的 exe/dll 屬於哪個安裝程式包

我想知道 MSI 在我的系統上安裝了給定的 dll 或 exe。我知道 Windows 會修復屬於已安裝軟體包的已刪除檔案。我可以在不實際刪除文件的情況下查詢該資訊嗎?有沒有工具或Win32 API可以檢查檔案屬於哪個套件?

答案1

看來還是有辦法的!我最近在以下子樹下發現了 Windows Installers 安裝的檔案的登錄項目:

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。但對於大多數用例來說,它可能沒問題。)

相關內容