Para acompanhar e expandir essa questão , quero saber como obter uma lista de aplicativos, conforme mostrado em appwiz.cpl, que sempre mostra todos os aplicativos instalados.
A partir daqui , sabemos que outros instaladores como InstallShield, Wise, NSIS não registram os aplicativos com WMIC, então
wmic product get name,version
me mostra alguns aplicativos, incluindo Visual C++, Apple Software Update e outros, mas muitos estão faltando, como:
- 7-Zip
- Google Chrome
- Mozilla Firefox
- Mozilla Thunderbird
- VLC
Existe um powershell ou outro método que possa mostrar todos os aplicativos instalados?
"Programas e Recursos", que também pode ser iniciado usando o arquivo appwiz.cpl do Painel de Controle, lista todos os aplicativos que se registraram de uma maneira definida para aparecer nesta lista. Tradicionalmente, esse é o principal ponto de entrada para permitir que os usuários removam ou modifiquem os aplicativos instalados.
Eu digo tradicionalmente, como o Windows agora tem, nas novas opções de configurações, uma página 'Aplicativos e recursos' (% Windir%\ImmersiveControlPanel\SystemSettings.exe). Essa lista de aplicativos também inclui o que agora é conhecido como aplicativos Windows Modern, também conhecidos como metro, tela inteira ou aplicativos da Windows Store. Como a pergunta era especificamente sobre Programas e Recursos, esta resposta não os abordará.
Como desenvolvedor, existem várias maneiras de criar um instalador para empacotar um aplicativo, seja usando o Windows Installer e, portanto, criando um arquivo MSI, com um kit de ferramentas como WiX ou InstallShield. Depois, há instaladores personalizados criados pelos desenvolvedores. De qualquer forma, para garantir que seu aplicativo apareça na lista acima, você só precisa definir dois valores , apesar de normalmente haver muito mais valores padrão, são eles:
As chaves do "Desinstalador", dependendo dos aplicativos instalados, podem ser encontradas nos seguintes locais de registro:
Computador de 32 bits:
Computador de 64 bits:
Onde : aplicativos de 32 bits em um aplicativo de 64 bits são normalmente encontrados no nó Wow6432. Aqueles sob HKCU são instaladores para o usuário, e não para o computador e às vezes é uma opção apresentada no instalador.
Portanto, para enumerar todos os aplicativos instalados, como o Explorer.exe faz, ao iniciar Programa e Recursos, você deve considerar os valores nas chaves acima.
Há um ponto adicional a ser observado, os aplicativos podem se "ocultar" de aparecer nesta lista usando o
SystemComponent
DWORD. O valor pode ser 1 ou 0, onde 1 ocultaria o aplicativo da lista. A intenção que eu suponho era que componentes do sistema, como .NET, que normalmente não seriam gerenciados pelo usuário, permanecessem ocultos. No entanto, isso é normalmente usado por fornecedores que instalam vários componentes para um conjunto e, em seguida, criam um desinstalador unificado para facilitar a remoção do aplicativo em sua totalidade e a remoção de cada componente na ordem correta.Portanto, o seguinte comando do PowerShell enumerará cada uma das chaves de desinstalação acima e, onde o SystemComponent não for 1 e houver um valor DisplayName, imprimirá o DisplayName:
Agora, é claro, existem outros aplicativos que você pode classificar como instalados, mas se eles não se registrarem em um dos locais acima, eles não aparecerão e estarão fora do escopo da pergunta.
Existem outras maneiras de obter os itens nesta lista, mas podem retornar apenas um subconjunto devido ao retorno apenas de aplicativos baseados em MSI, por exemplo.
Pergunta: Existe um powershell ou outro método que possa mostrar todos os aplicativos instalados?
Consulte Como criar uma lista de seus programas instalados no Windows
Aqui está um script Self-elevate para obter tudo com direitos de administrador:
Digite isso depois de abrir o Powershell , executando-o como administrador
O PowerShell fornecerá uma lista de todos os seus programas, completa com a versão, o nome do desenvolvedor e até a data em que você o instalou.
Você provavelmente desejará exportar isso para um arquivo, o que também é bastante fácil. Você pode simplesmente enviar a saída usando o símbolo > e adicionando o caminho para um novo arquivo de texto que deseja criar. Por exemplo:
Aqui está a fonte.