2009-11-10 19:05:44 +0000 2009-11-10 19:05:44 +0000
34
34

Obtenha uma lista de aplicações instaladas na linha de comando do Windows

Uma vez vi um tipo executar um comando e obtive uma lista de todas as aplicações instaladas no seu computador. Como faço isto?

Gostaria de ter uma lista das minhas aplicações actualmente instaladas. Eu acredito que ele usou WSH de alguma forma.

Respostas (8)

40
40
40
2009-11-10 19:15:35 +0000

Se utiliza Windows Vista ou Windows 7 e não quis instalar software adicional, pode:

  1. Abrir uma janela de linha de comando (Windows + R, CMD.EXE)
  2. Tipo wmic (Enter)
  3. Tipo product get name (Enter)
27
27
27
2009-11-10 19:19:33 +0000

PsInfo da Microsoft/Sysinternals pode listar todo o software instalado se utilizar a bandeira -s* quando o executa. Pode também utilizar -c* para o emitir como ficheiro csv para utilizar no Excel, por exemplo.

C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv
14
14
14
2009-11-10 19:17:09 +0000

Um script PowerShell para os listar:

$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 é exactamente uma linha de comando, mas para este efeito utilizo pessoalmente a ferramenta de desinstalação CCleaner , e pode exportar a lista de software instalado para um ficheiro de texto:

3
3
3
2015-08-29 19:19:55 +0000

Para adicionar à solução MicTech - utilizar wmic e capturar a lista de software instalado para um ficheiro:

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

wmic /OUTPUT:my_software.txt product get name
3
3
3
2009-11-10 19:43:46 +0000

A solução CCleaner acima parece ser uma forma decente de o fazer, a menos que se esteja determinado a utilizar a linha de comando. Já usei o CCleaner antes, é uma boa ferramenta Mas não assuma que tudo está registado na applet Add/Remove Programs (a mesma lista). Existem muitas aplicações que utilizam a instalação no estilo xcopy-, ou seja, simplesmente descompacte este arquivo e execute. Estas não aparecerão na lista.

2
2
2
2015-05-29 15:38:14 +0000

Sysinternals psinfo.exe fornece a informação mais completa de todas as sugestões dadas, e pode ser executado em qualquer PC Windows a partir da linha de comando directamente de um prompt CMD elevado, sem download permanente:

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

Obterá um prompt de segurança quando o executar, e um prompt EULA da primeira vez numa máquina. Um ficheiro de texto será guardado no ambiente de trabalho actual.

O EULA pode ser aceite automaticamente desta forma:

\live.sysinternals.com\tools\psinfo.exe -s /accepteula > %userprofile%\Desktop\_psinfo.txt
0
0
0
2017-07-12 15:37:28 +0000

A versão codificada nos programas instalados em C# através do registo 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();
        }
    }
}
0
0
0
2013-09-02 08:52:09 +0000

Existe uma aplicação portátil chamada Showmysoft. Irá mostrar o software instalado na máquina local e nas máquinas remotas e pode exportar para PDF e para CSV . A instalação não é necessária. Download a partir de http://spidersoft.in/showmysoft/ .

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