Liste der installierten Anwendungen von der Windows-Befehlszeile abrufen


34

Ich habe einmal gesehen, wie ein Mann einen Befehl ausgeführt hat und eine Liste aller installierten Anwendungen auf seinem Computer abgerufen hat. Wie mache ich das?

Ich möchte eine Liste meiner aktuell installierten Anwendungen erhalten. Ich glaube, er hat irgendwie WSH benutzt .


Antworten:


39

Wenn Sie Windows Vista oder Windows 7 verwenden und keine zusätzliche Software installieren möchten, haben Sie folgende Möglichkeiten :

  1. Öffnen Sie ein Befehlszeilenfenster ( Windows+ R, CMD.EXE)
  2. Typ wmic( Enter)
  3. Typ product get name( Enter)

+1 Es gibt nicht viel an Ihrem Computer, was WMI Ihnen heutzutage nicht sagen kann.
GAThrawn

5
Hier steht, dass Win32_Product nicht alle Informationen über die installierte Software liefert. Das heißt, es werden nicht alle Programme aufgelistet. Der Grund dafür ist, dass win32_product die MSI-Datenbank abfragt, um die Liste abzurufen. Es wird aber viele Programme geben, die keinen Eintrag haben, da sie von exe installiert wurden. In diesem Fall erhalten Sie beim Abfragen des Registrierungsschlüssels uninstall Informationen zu dieser Software.
Miserable Variable

1
@MiserableVariable Sagt es das? (Ist es der falsche Link?) Wie würde man die Deinstallationsregistrierung auf ähnliche Weise abfragen? (oder vielleicht von wmicselbst?)
JeromeJ

1
Funktioniert auch mit Windows 10
Turcia

5
Bin es nur ich oder läuft das sehr langsam?
user3083324

27

PsInfo von Microsoft / Sysinternals kann die gesamte installierte Software auflisten, wenn Sie beim Ausführen das Flag -s verwenden. Sie können -c auch verwenden, um es als CSV-Datei auszugeben, die Sie beispielsweise in Excel verwenden können.

C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv

1
funktioniert auch unter Win XP im Gegensatz zur WMI-Lösung
Gerd Klima

Zeigt nicht die gesamte installierte Software an Windows 2012 R2 x64. Ich benutzePsInfo ver. 1.77
Tomasito

Diese Methode erzeugte 933 Elemente auf meinem Laptop und die WMI-Methode erzeugte nur 598. Es schien eine größere Liste zu erzeugen ...
Andrej Adamenko

@djhowell: Ich versuche, den Befehl unter Windows 7 auszuführen, erhalte jedoch die Fehlermeldung " psinfo is not recognized as an internal or external command, operable program or batch file.". Und das passiert sogar im Cmd-Fenster mit erhöhten Rechten.
skm

14

Ein PowerShell-Skript, um sie aufzulisten:

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

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

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

Nicht gerade die Befehlszeile, aber zu diesem Zweck verwende ich persönlich das Deinstallationstool von CCleaner , und Sie können die Liste der installierten Software in eine Textdatei exportieren:

Alt-Text


2
Eher ironisch, dass die Windows Powershell-Tools usw. eine Ewigkeit brauchen (> 5 Minuten), aber CCleaner ist sofort verfügbar.
CAD Kerl

6

Auch nicht unbedingt die Kommandozeile, aber auch die alte SIW wird den Job erledigen. Markieren Sie Anwendungen , klicken Sie mit der rechten Maustaste → Exportieren nachCSV, HTML, TXT oder XML :

Alt-Text

SIW ist Freeware und portabel, eine Installation ist nicht erforderlich.


Ich habe immer gewusst, dass SIW eine Lizenz benötigt. Woher bekommen Sie diese als Freeware?
El Turner

3

Die obige CCleaner-Lösung scheint ein guter Weg zu sein, es sei denn, Sie möchten die Befehlszeile verwenden. Ich habe CCleaner schon einmal verwendet, es ist ein gutes Tool. Aber nehmen Sie nicht an, dass alles im Applet "Software" (dieselbe Liste) registriert ist. Es gibt eine Vielzahl von Apps, die eine Installation im xcopy-Stil verwenden, dh dieses Archiv einfach entpacken und ausführen. Diese werden in der Liste nicht angezeigt.


3

So fügen Sie die Lösung von MicTech hinzu: Verwenden Sie wmicdie Liste der installierten Software und erfassen Sie sie in einer Datei:

Öffnen Sie ein Befehlszeilenfenster ( Windows+ R, CMD.EXE)

wmic /OUTPUT:my_software.txt product get name

2

Sysinternals psinfo.exe bietet die umfassendsten Informationen zu allen Vorschlägen und kann auf jedem Windows-PC über die Befehlszeile direkt von einer erhöhten CMD-Eingabeaufforderung aus ausgeführt werden, ohne dass ein permanenter Download erforderlich ist:

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

Sie erhalten eine Sicherheitsabfrage, wenn Sie dies ausführen, und eine EULA-Abfrage, wenn Sie das erste Mal auf einem Computer arbeiten. Eine Textdatei wird auf dem aktuellen Desktop gespeichert.

Die EULA kann wie folgt automatisch akzeptiert werden:

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


0

Die codierte Version in C # installierten Programmen über die Windows-Registrierung:

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();
        }
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.