Я хотел бы знать, что MSI установил данный DLL или EXE-файл в моей системе. Я знаю, что Windows исправляет удаленные файлы, если они принадлежат установленному пакету. Могу ли я запросить эту информацию, не удаляя файл? Есть ли инструмент или Win32 API, чтобы проверить, к какому пакету принадлежит файл?
2 ответа
Если у вас все в порядке с поиском правдоподобных игл в стоге сена, это быстрое и грязное злоупотребление 7-Zip сработает:
7z.exe l -an -air!C:\Windows\Installer\*.msi > needlelist.txt
Затем откройте needlelist.txt
в любом текстовом редакторе, найдите needlename.dll
и вы найдете соответствующий пакет .msi в списках, созданных 7-Zip.
(Примечание: этот метод «грязный», потому что он просто сообщает вам, какие MSI-пакеты содержат файл с именем needlename.dll
. Но это, вероятно, хорошо для большинства случаев использования.)
Похоже, что в конце концов может быть путь! Недавно я обнаружил записи реестра для файлов, установленных установщиками 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