Listar todo el software instalado en la PC

30

¿Hay algo integrado en Windows que me permita enumerar todo el software instalado en una computadora de manera que pueda copiarse / pegarse en una hoja de cálculo? Sé que hay software que puede hacer esto, pero no puedo instalar nada. Preferiría no usar un archivo por lotes si es posible, pero imagino que esa será la única forma. Idealmente, podría generar la misma información que se muestra en la vista (sin expandir) del formulario Agregar o quitar programas.

Joel B
fuente
Posiblemente podría escribir un archivo por lotes para consultar la base de datos de Windows Installer, pero eso podría no captarlo todo.
Escribí una aplicación que consulta el registro para obtener esta información, y si bien la aplicación no tiene el formato que desea, la parte del código se puede copiar y modificar fácilmente para hacerlo, aquí está el enlace a la fuente: pulsarsoftware.org/Projects/ProcessManager.html
MaQleod
1
En Windows PowerShell, puede intentar: Get-WmiObject -Class Win32_Product. Ver aquí para más detalles.
rishimaharaj

Respuestas:

40

Enciende tu consola y escribe:

wmic product get name,version

Lleva un tiempo, pero obtendrá la lista completa de programas instalados. WMIC es la versión de consola de Windows Management Instrumentation, disponible desde Windows 2000 en adelante. Siguiendo las instrucciones aquí y aquí , puede decirle a WMIC que imprima en formato XML, que podría ser un poco más conveniente para usted. Sin embargo, solo llamando wmic product get nameobtendrá una lista de nombres de aplicaciones, que puede copiar y pegar fácilmente en un editor de texto y convertir a formato de hoja de cálculo.

Alternativamente, ingrese:

wmic /output:C:\InstallList.txt product get name,version

Esto generará un archivo TXT con la lista de programas. Luego puede pegarlo en una hoja de cálculo, si lo desea.

Fuente: http://helpdeskgeek.com/how-to/generate-a-list-of-installed-programs-in-windows/


También puede usar el archivo csv.xsl para formatear la salida en una lista CSV de resultados:

wmic /output:C:\InstallList.csv product get /format:csv.xsl

o el archivo htable.xsl para crear una tabla HTML de resultados:

wmic /output:C:\InstallList.htm product get /format:hform.xsl
Yannis
fuente
2
Si agrega> InstallList.txt al final, obtendrá un archivo de texto que contiene la salida. El directorio actual en el que se encuentra es donde se creará el archivo. También puede agregar, InstallDate después de la versión. Esto mostrará la fecha en que se instaló el producto. Esto es útil para resolver cualquier programa instalado por el fabricante. Debería poder abrir este archivo de texto en Excel y ordenar las cosas un poco si es necesario.
John Dyer
8
Lamentablemente, no parece generar la misma lista que se muestra en Programas y características: hay varias aplicaciones que no aparecen en la primera y algunas que sí, pero que no existen en la segunda. Algunos elementos que no aparecen en la wmiclista: mis juegos Steam instalados, Notepad ++, Winmerge, Google Music Manager . Elementos que no aparecen en Programas y características: Java Auto Updater, Actualización de seguridad para CAPICOM (KB931906) . Intenté ejecutarlo desde un administrador CMD pero la lista generada era la misma.
Chuim
1
Esta pregunta en StackOverflow explica un poco por qué: stackoverflow.com/questions/673233/…
Chuim
Utilicé un comando similar, pero eso no ha dado pocos nombres s / w. Ejemplo. Propros, tintineo, etc. ¿Cómo incluir eso y similares?
Satya Prakash
8

Ejecute wmic product getpara obtener una lista del software instalado, debe ser exactamente la misma lista que agregar / quitar programas.

Supuestamente puede hacer que salga en un formato específico, pero no lo he probado.

(Utilícelo wmic product get /?para ver los parámetros, incluido el formato de salida, traté de incluirlo aquí pero el formato no era del todo correcto).

Mark Allen
fuente
Ja, te voté de todos modos porque encontraste e incluiste los enlaces para que salga específicamente en XML. Buen trabajo. :)
Mark Allen
El resultado que obtengo no es exactamente lo que agrega / quita programas. Alguna idea de por qué?
Joel B
Parece incluir todas las partes componentes.
Mark Allen
¿Hay alguna manera de que los usuarios instalen el software? Posiblemente el problema relacionado con el usuario está causando que no todo el software entre en la lista. Aunque solo uso esta máquina.
Satya Prakash
5

Como otros han mencionado, puede obtener esta información con una consulta WMI para objetos Win32_Product. PowerShell incluso lo volcará en un archivo CSV si lo desea.

Get-WmiObject -Class "Win32_Product" | Export-CSV (Join-Path $home "Win32_Product.csv")

Sin embargo, debe buscar problemas con Win32_Product . No todo son gominolas y piruletas.

Patrick Seymour
fuente
Siempre disfruto de un enfoque alternativo a las cosas, especialmente cuando se trata de Powershell.
Alban
Aquí hay otro comando de PowerShell para hacer el truco: Get-ItemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall * | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize Puede agregar "> archivo de salida" para guardar la salida. Ver más aquí: howtogeek.com/165293/… o aquí: theitbros.com/…
yosh m
Nota para cualquier otra persona que intente el comando @ yoshm, necesita otro \ entre Desinstalar y *. El comando debería ser:Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table
stephenwade
4

WMIC no funcionará en un servidor a menos que lo haya instaladoManagement and Monitoring ToolsAdd/Remove Windows Components explícitamente en el menú .

Otra solución es ir al Registro y ver todos los Programas Desinstalables yendo a:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Tendrá que hacer clic en cada uno individualmente para ver el valor, por lo tanto, puede hacer clic derecho en la Uninstallcarpeta y seleccionar Exportar . Asegúrese de que el Rango de exportación esté configurado para incluir solo la Rama seleccionada :

Rama seleccionada

Luego puede abrir el .regarchivo en notepad ++, pero obtendrá mucha información adicional sobre cada aplicación:

.reg

Puede deshacerse de todas las líneas con las que no comienza "DisplayName" haciendo coincidir las siguientes expresiones regulares :

^(?!"DisplayName").+

Luego puede eliminar una cadena "DisplayName" o "haciendo coincidir la siguiente expresión regular :

("DisplayName"="|")

Luego puede eliminar cualquier línea duplicada haciendo coincidir la siguiente expresión regular :

^(.*)(\r?\n\1)+$

O simplemente puede ordenar las líneas alfabéticamente y luego eliminar las en blanco

KyleMit
fuente
3

La forma más fácil que encontré es ejecutar el limpiador piriforme.
Esto tiene un botón en Herramientas -> Desinstalar -> "guardar en archivo de texto"

usuario167328
fuente
1
El OP solicitó una solución integrada ya que no puede instalar nada (está bien, hay CCleaner portátil, pero ese no es el punto). Y la salida debería ser compatible con copiar y pegar
nixda
1
Entiendo la limitación impuesta por el OP, pero este método en realidad generó una lista tan completa como se muestra en Programas y características (como dicen mis comentarios sobre la respuesta principal, wmicno logró eso).
Chuim
0

En Windows 7 puede usar un script de PowerShell:

Abra PowerShell haciendo clic en el Startbotón y escribiendo powershellen el campo de búsqueda.

Luego ingrese el siguiente comando en la ventana de PowerShell:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize

Puede eliminar cualquiera de los campos: DisplayName, DisplayVersion, etc. si no los necesita.

Si desea guardar la salida en un archivo, use la redirección:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize > C:\temp\AllInstalledPrograms.txt
Flot2011
fuente
0

Otras dos soluciones que no son de línea de comandos no mencionadas anteriormente son:

  1. MyUninstaller: un programa gratuito de NirSoft que, además de desinstalar, también puede exportar a HTML una lista completa de todo el software instalado que incluye mucha información adicional. Tiene la ventaja de ser portátil. Si bien no está "incorporado", puede ejecutarlo desde una unidad USB. Lo puedes encontrar aquí .

  2. Belarc Advisor: un programa gratuito (para uso personal) que realiza análisis de seguridad e inventario completo del hardware y software de su computadora. Está disponible aquí . Desafortunadamente, debe instalarlo, por lo que no satisface completamente las necesidades del OP, pero puede satisfacer las necesidades de otros que tienen la misma pregunta y pueden instalar.

yosh m
fuente
0

La versión codificada en c # programas instalados a través del registro

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 && subkey.GetValue("DisplayName").ToString().Contains("Visual Studio"))
                            {
                                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