Como descobrir a qual pacote de instalação um determinado exe/dll pertence

Como descobrir a qual pacote de instalação um determinado exe/dll pertence

Gostaria de saber qual MSI instalou uma determinada dll ou exe em meu sistema. Eu sei que o Windows corrige arquivos excluídos se eles pertencerem a um pacote instalado. Posso consultar essas informações sem realmente excluir o arquivo? Existe uma ferramenta ou API Win32 para verificar a qual pacote um arquivo pertence?

Responder1

Parece que afinal pode haver uma maneira! Recentemente descobri entradas de registro para arquivos instalados pelo Windows Installers na seguinte subárvore:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

Eu escrevi um pequeno script Python para procurar um arquivo no instalador usando as informações armazenadas lá:

> 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

Está disponível aqui:https://github.com/Zero3/windows-installer-file-search

Responder2

Se você concorda em apenas encontrar agulhas plausíveis no palheiro, esse abuso rápido e sujo de7-Zipfuncionará:

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

Em seguida, abra needlelist.txtem qualquer editor de texto, pesquise needlename.dlle você encontrará o pacote .msi correspondente nas listagens geradas pelo 7-Zip.

(Observação: este método é 'sujo' porque apenas informa quais pacotes .msi contêm um arquivo chamado needlename.dll. Mas provavelmente é adequado para a maioria dos casos de uso.)

informação relacionada