10

Я хотел бы знать, что MSI установил данный DLL или EXE-файл в моей системе. Я знаю, что Windows исправляет удаленные файлы, если они принадлежат установленному пакету. Могу ли я запросить эту информацию, не удаляя файл? Есть ли инструмент или Win32 API, чтобы проверить, к какому пакету принадлежит файл?

2 ответа2

5

Если у вас все в порядке с поиском правдоподобных игл в стоге сена, это быстрое и грязное злоупотребление 7-Zip сработает:

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

Затем откройте needlelist.txt в любом текстовом редакторе, найдите needlename.dll и вы найдете соответствующий пакет .msi в списках, созданных 7-Zip.

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

5

Похоже, что в конце концов может быть путь! Недавно я обнаружил записи реестра для файлов, установленных установщиками 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .