Com o PowerShell, obtenha exatamente a mesma lista de aplicativos que em Adicionar/Remover programas

Com o PowerShell, obtenha exatamente a mesma lista de aplicativos que em Adicionar/Remover programas

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, InstallDateetc, 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. :)

informação relacionada