Obtenga una lista de las aplicaciones instaladas desde la línea de comandos de Windows

34

Una vez vi a un tipo ejecutar un comando y obtuve una lista de todas las aplicaciones instaladas en su computadora. ¿Cómo hago esto?

Me gustaría una lista de mis aplicaciones instaladas actualmente. Creo que usó WSH de alguna manera.

Peter Mortensen
fuente
Relacionado: ¿Hay una utilidad que me dará una lista de todos los programas instalados descargados en un archivo de texto para Windows?   (no restringido a soluciones de línea de comando).
G-Man dice 'reinstalar a Monica' el

Respuestas:

39

Si usa Windows Vista o Windows 7 y no desea instalar software adicional, puede:

  1. Abra una ventana de línea de comandos ( Windows+ R, CMD.EXE)
  2. Tipo wmic( Enter)
  3. Tipo product get name( Enter)
MicTech
fuente
+1 No hay mucho sobre su máquina que WMI no pueda decirle en estos días.
GAThrawn, el
55
aquí dice que Win32_Product no dará toda la información sobre los softwares instalados. Eso significa que no enumerará todos los softwares. La razón de esto es que win32_product consulta la base de datos MSI para obtener la lista. Pero habrá muchos softwares que no tendrán una entrada ya que se instalaron desde exe's. En este caso, la consulta de la clave de registro de desinstalación proporciona información sobre estos softwares.
Variable miserable
1
@MiserableVariable ¿Eso dice eso? (¿Es el enlace incorrecto?) ¿Cómo se consultaría el registro de desinstalación de manera similar? (¿o tal vez usándose a wmicsí mismo?)
JeromeJ
1
También funciona con Windows 10
Turcia
55
¿Soy solo yo, o esto va muy lento?
user3083324
27

PsInfo de Microsoft / Sysinternals puede enumerar todo el software instalado si usa el indicador -s cuando lo ejecuta. También puede usar -c para generarlo como un archivo csv para usar en Excel, por ejemplo.

C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv
djhowell
fuente
1
también funciona en Win XP en contraste con la solución WMI
Gerd Klima
No muestra todo el software instalado en Windows 2012 R2 x64. Estoy usandoPsInfo ver. 1.77
Tomasito
Este método produjo 933 elementos en mi computadora portátil y el método WMI produjo solo 598. Parecía producir una lista más grande ...
Andrej Adamenko
@djhowell: Estoy tratando de ejecutar el comando en Windows 7 pero aparece un error " psinfo is not recognized as an internal or external command, operable program or batch file.". Y esto sucede incluso en la ventana cmd de derechos elevados.
skm
14

Un script de PowerShell para enumerarlos:

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

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

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

No es exactamente la línea de comandos, pero para este propósito personalmente uso la herramienta de desinstalación de CCleaner , y puedes exportar la lista de software instalado a un archivo de texto:

texto alternativo

John T
fuente
2
Es bastante irónico que las herramientas de Windows Powershell, etc. tarden años en ejecutarse (> 5 minutos), pero CCleaner es instantáneo.
Bloque CAD el
6

Tampoco es exactamente la línea de comandos, pero el viejo y confiable SIW también hará el trabajo. Resalte Aplicaciones , haga clic con el botón derecho → Exportar aCSV, HTML, TXT o XML :

texto alternativo

SIW es gratuito y portátil, y no requiere instalación.

Peter Mortensen
fuente
Siempre he sabido que SIW requiere una licencia, ¿dónde la obtienes como Freeware?
El Turner
3

La solución CCleaner anterior parece una forma decente de hacerlo, a menos que esté decidido a usar la línea de comandos. He usado CCleaner antes, es una buena herramienta. Pero no asuma que todo está registrado en la aplicación Agregar o quitar programas (la misma lista). Hay muchas aplicaciones que utilizan la instalación de estilo xcopy, es decir, simplemente descomprima este archivo y ejecútelo. Esos no aparecerán en la lista.

JMD
fuente
3

Para agregar a la solución de MicTech : use wmicy capture la lista de software instalado en un archivo:

Abra una ventana de línea de comandos ( Windows+ R, CMD.EXE)

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

Sysinternals psinfo.exe proporciona la información más completa de todas las sugerencias dadas, y se puede ejecutar en cualquier PC con Windows desde la línea de comandos directamente desde un indicador CMD elevado, sin descarga permanente:

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

Recibirá un aviso de seguridad cuando ejecute esto, y un aviso de EULA la primera vez en una máquina. Se guardará un archivo de texto en el escritorio actual.

El EULA puede aceptarse automáticamente de esta manera:

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

Hay una aplicación portátil llamada Showmysoft. Mostrará el software instalado en la máquina local y las máquinas remotas y puede exportar a PDF y CSV . No se requiere instalación. Descargar desde http://spidersoft.in/showmysoft/ .

El requisito mínimo del sistema es Microsoft .NET Framework 2.0.

Jacob Justin
fuente
0

La versión codificada en los programas instalados en C # a través del registro de 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
fuente