Obter lista de aplicativos instalados a partir da linha de comando do Windows

32

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

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

    
por Peter Mortensen 10.11.2009 / 20:05

9 respostas

38

Se você usar o Windows Vista ou o Windows 7 e não quiser instalar software adicional, poderá:

  1. Abra uma janela de linha de comando ( Windows + R , CMD.EXE)
  2. Digite wmic ( Enter )
  3. Digite product get name ( Enter )
por 10.11.2009 / 20:15
26

PsInfo da Microsoft / Sysinternals pode listar todo o software instalado se você usar o Sinalizador> -s quando você o executa. Você também pode usar -c para produzir como um arquivo csv para usar no Excel, por exemplo.

C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv
    
por 10.11.2009 / 20:19
14

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, você pode exportar a lista de softwares instalados para um arquivo de texto:

    
por 10.11.2009 / 20:17
6

Não é exatamente a linha de comando, mas o SIW fará o trabalho também. destaque Aplicativos, clique com o botão direito > Exportar para > CSV, HTML, TXT ou XML

O SIW é gratuito e portátil, não requer instalação.

    
por 10.11.2009 / 21:06
3

A solução CCleaner acima parece ser 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 applet Adicionar / Remover Programas (a mesma lista). Existem muitos aplicativos que usam a instalação no estilo xcopy, ou seja, simplesmente descompacte este arquivo e execute. Aqueles não aparecerão na lista.

    
por 10.11.2009 / 20:43
3

Para adicionar à solução de Peter Mortensen - use o wmic e capture a lista de softwares instalados em um arquivo:

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

wmic /OUTPUT:my_software.txt product get name
    
por 29.08.2015 / 21:19
2

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

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

Você receberá um aviso de segurança ao executar isso e solicitará o EULA pela primeira vez em uma máquina. Um arquivo de texto será salvo no Desktop atual.

O EULA pode ser aceito automaticamente assim:

\live.sysinternals.com\tools\psinfo.exe -s /accepteula > %userprofile%\Desktop\_psinfo.txt
    
por 29.05.2015 / 17:38
0

Existe um aplicativo portátil chamado Showmysoft. Ele mostrará o software instalado na máquina local e nas máquinas remotas e poderá exportar para PDF e para CSV . A instalação não é necessária. Faça o download do link .

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

    
por 02.09.2013 / 10:52
0

A versão codificada em programas instalados em C # através do 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();
        }
    }
}
    
por 12.07.2017 / 17:37