Как узнать, к какому установочному пакету принадлежит данный exe/dll

Как узнать, к какому установочному пакету принадлежит данный exe/dll

Я хотел бы узнать, какой MSI установил данный dll или exe в моей системе. Я знаю, что 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, и вы найдете соответствующий пакет .msi в списках, сгенерированных 7-Zip.

(Примечание: этот метод «грязный», поскольку он просто сообщает вам, какие пакеты .msi содержат файл с именем needlename.dll. Но он, вероятно, подойдет для большинства случаев использования.)

Связанный контент