Obter lista de aplicativos instalados na linha de comando do Windows

34

Uma vez vi um cara executar um comando e recebi uma lista de todos os aplicativos instalados em seu computador. Como eu faço isso?

Gostaria de uma lista dos meus aplicativos atualmente instalados. Eu acredito que ele usou o WSH de alguma forma.

Peter Mortensen
fonte
Relacionado: Existe um utilitário que me fornecerá uma lista de todos os programas instalados despejados em um arquivo de texto para Windows?   (não restrito a soluções de linha de comando).
G-Man diz 'Reinstate Monica'

Respostas:

39

Se você usa o Windows Vista ou o Windows 7 e não deseja instalar software adicional, pode:

  1. Abra uma janela da linha de comando ( Windows+ R, CMD.EXE)
  2. Tipo wmic( Enter)
  3. Tipo product get name( Enter)
MicTech
fonte
+1 Não há muito sobre sua máquina que o WMI não possa lhe dizer atualmente.
GAThrawn
5
aqui diz que o Win32_Product não fornecerá todas as informações sobre os softwares instalados. Isso significa que não listará todos os softwares. A razão para isso é: win32_product consulta o banco de dados MSI para obter a lista. Mas haverá muitos softwares que não terão entrada porque serão instalados a partir do exe. Nesse caso, consultar a chave do registro de desinstalação fornece informações sobre esses softwares.
Variável miserável
1
@MiserableVariable Diz isso? (É o link errado?) Como alguém consultaria o registro de desinstalação de maneira semelhante? (ou talvez usando wmic-se?)
JeromeJ
1
Também funciona com o Windows 10
Turcia
5
Sou só eu ou isso corre muito devagar?
user3083324
27

O PsInfo da Microsoft / Sysinternals pode listar todos os softwares instalados se você usar o sinalizador -s ao executá-lo. Você também pode usar -c para produzi-lo como um arquivo csv para usar no Excel, por exemplo.

C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv
djhowell
fonte
1
também funciona unter Win XP em contraste com a solução WMI
Gerd Klima
Não mostra todo o software instalado Windows 2012 R2 x64. Estou usando #PsInfo ver. 1.77
Tomasito
Este método produziu 933 itens no meu laptop e o método WMI produzido apenas 598. Ele parecia produzir uma lista maior ...
Andrej Adamenko
@djhowell: Estou tentando executar o comando no Windows 7, mas recebo um erro " psinfo is not recognized as an internal or external command, operable program or batch file.". E isso acontece mesmo na janela cmd de direitos elevados.
Skm #
14

Um script do PowerShell para listá-los:

$loc = Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall

$names = $loc |foreach-object {Get-ItemProperty $_.PsPath}

foreach ($name in $names)
{
    Write-Host $name.Displayname
}

Não é exatamente a linha de comando, mas para esse propósito, eu pessoalmente uso a ferramenta de desinstalação do CCleaner e você pode exportar a lista de softwares instalados para um arquivo de texto:

texto alternativo

John T
fonte
2
É bastante irônico que as ferramentas do Windows Powershell, etc, levem anos para serem executadas (> 5 minutos), mas o CCleaner é instantâneo.
CAD bloke
6

Também não é exatamente a linha de comando, mas o velho e confiável SIW também fará o trabalho. Destaque Aplicativos , clique com o botão direito do mouse em → Exportar paraCSV, HTML, TXT ou XML :

texto alternativo

O SIW é gratuito e portátil, e a instalação não é necessária.

Peter Mortensen
fonte
Eu sempre sei que a SIW exige uma licença, de onde você a obtém como Freeware?
El Turner
3

A solução CCleaner acima parece uma maneira decente de fazer isso, a menos que você esteja determinado a usar a linha de comando. Eu usei o CCleaner antes, é uma boa ferramenta. Mas não assuma que tudo está registrado no miniaplicativo Adicionar / Remover Programas (a mesma lista). Existem muitos aplicativos que usam a instalação no estilo xcopy, ou seja, basta descompactar esse arquivo e executar. Aqueles não aparecerão na lista.

JMD
fonte
3

Para adicionar à solução da MicTech - use wmice capture a lista de software instalado em um arquivo:

Abra uma janela da linha de comando ( Windows+ R, CMD.EXE)

wmic /OUTPUT:my_software.txt product get name
Moots
fonte
2

O Sysinternals psinfo.exe fornece as informações mais completas de todas as sugestões fornecidas e pode ser executado em qualquer PC com Windows a partir da linha de comando, diretamente de um prompt elevado de CMD, sem download permanente:

\\live.sysinternals.com\tools\psinfo.exe -s > %userprofile%\Desktop\_psinfo.txt

Você receberá um prompt de segurança ao executar isso e um EULA na primeira vez em uma máquina. Um arquivo de texto será salvo na área de trabalho atual.

O EULA pode ser aceito automaticamente assim:

\\live.sysinternals.com\tools\psinfo.exe -s /accepteula > %userprofile%\Desktop\_psinfo.txt
Matthew Simpson
fonte
0

Há um aplicativo portátil chamado Showmysoft. Ele mostrará o software instalado na máquina local e nas máquinas remotas e pode exportar para PDF e CSV . A instalação não é necessária. Faça o download em http://spidersoft.in/showmysoft/ .

O requisito mínimo do sistema é o Microsoft .NET Framework 2.0.

jacob justin
fonte
0

A versão codificada nos programas instalados em C # via registro do Windows:

using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;


namespace SoftwareInventory
{
    class Program
    {
        static void Main(string[] args)
        {
            //!!!!! Must be launched with a domain administrator user!!!!!
            Console.ForegroundColor = ConsoleColor.Green;
            StringBuilder sbOutFile = new StringBuilder();
            Console.WriteLine("DisplayName;IdentifyingNumber");
            sbOutFile.AppendLine("Machine;DisplayName;Version");

            // Retrieve machine name from the file :File_In/collectionMachines.txt
            //string[] lines = new string[] { "NameMachine" };
            string[] lines = File.ReadAllLines(@"File_In/collectionMachines.txt");
            foreach (var machine in lines)
            {
                // Retrieve the list of installed programs for each extrapolated machine name
                var registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
                using (Microsoft.Win32.RegistryKey key = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, machine).OpenSubKey(registry_key))
                {
                    foreach (string subkey_name in key.GetSubKeyNames())
                    {
                        using (RegistryKey subkey = key.OpenSubKey(subkey_name))
                        {
                            //Console.WriteLine(subkey.GetValue("DisplayName"));
                            //Console.WriteLine(subkey.GetValue("IdentifyingNumber"));
                            if (subkey.GetValue("DisplayName") != null)
                            {
                                Console.WriteLine(string.Format("{0};{1};{2}", machine, subkey.GetValue("DisplayName"), subkey.GetValue("Version")));
                                sbOutFile.AppendLine(string.Format("{0};{1};{2}", machine, subkey.GetValue("DisplayName"), subkey.GetValue("Version")));
                            }
                        }
                    }
                }
            }
            // CSV file creation
            var fileOutName = string.Format(@"File_Out\{0}_{1}.csv", "Software_Inventory", DateTime.Now.ToString("yyyy_MM_dd_HH_mmssfff"));
            using (var file = new System.IO.StreamWriter(fileOutName))
            {
                file.WriteLine(sbOutFile.ToString());
            }

            // Press Enter to continue 
            Console.WriteLine("Press enter to continue!");
            Console.ReadLine();
        }
    }
}
Domenico Zinzi
fonte