Existem vários métodos para localizar aplicativos instalados no sistema, mas, pelo que sei, nenhum retorna exatamente a mesma lista do item do painel de controle Adicionar e Remover Programas. Algumas das maneiras que tentei são:
- WMI via Win32_Product e Win32Reg_AddRemovePrograms
- Registro, ramificações x32 e x64
Por exemplo, tenho 217 entradas em AR e
gwmi Win32_Product
retorna 261 itens.
gp HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | ? {![string]::IsNullOrWhiteSpace($_.DisplayName) } | select DisplayName
retorna 119 itens.
(gwmi Win32Reg_AddRemovePrograms) + (gwmi Win32Reg_AddRemovePrograms64) | sort DisplayName -Unique
retorna 107 itens.
Tentei acertar com um filtro mais complexo que incluía InstallLocation
, InstallSource
, InstallDate
etc, sem sucesso.
Responder1
Para mim, este é um caso infeliz deLei de Conway. O Windows é um sistema operacional muito complexo, com décadas de história e um grande número de peças móveis. O que isso significa é que algo que parece simples, como fazer a pergunta "o que está tudo instalado no meu computador?" infelizmente é muito complicado. O que torna o "software instalado" complicado é que ele vem de várias fontes diferentes. Há software de 64 bits e software de 32 bits e software que é instalado apenas para determinados usuários e software que é instalado para todos os usuários e software que foi instalado ou atribuído a você por meio da Política de Grupo e muito mais.
Felizmente,Monitor de processos da Sysinternalpode revelar todos eles para você. Basta iniciá-lo, monitorar os eventos do registro e, em seguida, clicar no miniaplicativo Adicionar/Remover Programas do painel de controle e ver o que o Windows está fazendo em segundo plano.
Ele é lido em muitas fontes diferentes:
HKLM\Software\Installer\Products
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\...
HKCU\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\...
HKCU\Software\Microsoft\Installer\Products
HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\AppMgmt
HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\...
E mais!
Por um ladoépossível ver exatamente qual sequência de consultas de registro é necessária para reconstruir com precisão o que você vê em "Adicionar/Remover Programas", que é uma "visualização" baseada no usuário atualmente conectado, etc. rapidamente chegar à conclusão de que é ummuitode trabalho e que talvez reconstruir uma visão exata de Adicionar/Remover Programas talvez não fosse tão importante para você em primeiro lugar. :)