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.


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)

+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

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


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.


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.


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

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


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();
        }
    }
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.