Com o powershell, obtenha exatamente a mesma lista de aplicativos que em Add / Remove programms

5

Existem vários métodos para localizar aplicativos instalados no sistema, mas, até onde sei, nenhum retorna exatamente a mesma lista que o item do painel de controle Adicionar Remover Programas. Algumas das maneiras que eu tentei são:

  • WMI via Win32_Product e Win32Reg_AddRemovePrograms
  • Registro, ambos os ramos 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.

Eu tentei definir um filtro mais complexo que incluísse InstallLocation , InstallSource , InstallDate etc sem sucesso.

    
por majkinetor 20.05.2015 / 13:31

1 resposta

4

Para mim, este é um caso infeliz da Lei de Conway . O Windows é um sistema operacional muito complexo, com décadas de história e um grande número de partes móveis. O que isto significa é que algo que parece simples, como fazer a pergunta "wtf tudo está 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, software de 32 bits e software instalado apenas para determinados usuários, além de software instalado para todos os usuários e software que foi instalado ou atribuído a você por meio da Diretiva de Grupo e muito mais.

Felizmente, o Monitor de processos da Sysinternal pode revelar tudo para você. Basta ativá-lo, monitorar os eventos do Registro e, em seguida, clicar no applet do painel de controle Adicionar / Remover Programas e ver o que o Windows está fazendo em segundo plano.

Ele lê várias 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 "visão" baseada no momento. Por outro lado, acho que você chegará rapidamente à conclusão de que é um muito trabalho e que talvez a reconstrução de uma visão exata de Adicionar / Remover Programas talvez não seja tão importante para você em primeiro lugar. :)

    
por 20.05.2015 / 15:24

Tags