Listet alle auf dem PC installierten Programme auf

30

Ist etwas in Windows integriert, das es mir ermöglicht, die gesamte installierte Software auf einem Computer so aufzulisten, dass sie in eine Tabelle kopiert / eingefügt werden kann? Ich weiß, dass es Software gibt, die das kann, aber ich kann nichts installieren. Ich würde es vorziehen, wenn möglich keine Batch-Datei zu verwenden, aber ich stelle mir vor, dass dies der einzige Weg ist. Im Idealfall kann ich die gleichen Informationen ausgeben, die in der (nicht erweiterten) Ansicht des Formulars "Software" angezeigt werden.

Joel B
quelle
Möglicherweise können Sie eine Batchdatei schreiben, um die Windows Installer-Datenbank abzufragen, aber dies kann möglicherweise nicht alles erfassen.
Ich habe eine App geschrieben, die die Registrierung nach diesen Informationen abfragt, und obwohl die App sie nicht in das gewünschte Format bringt, kann der Teil des Codes kopiert und einfach geändert werden, um dies zu tun. Hier ist der Link zur Quelle: pulsarsoftware.org/Projects/ProcessManager.html
MaQleod
1
In Windows Powershell können Sie versuchen: Get-WmiObject -Class Win32_Product. Sehen Sie hier für weitere Details.
Rishimaharaj

Antworten:

40

Starten Sie Ihre Konsole und geben Sie Folgendes ein:

wmic product get name,version

Es dauert eine Weile, aber Sie erhalten die vollständige Liste der installierten Programme. WMIC ist die Konsolenversion von Windows Management Instrumentation, die ab Windows 2000 verfügbar ist. Wenn Sie den Anweisungen hier und hier folgen, können Sie WMIC anweisen , in einem XML-Format auszugeben, das für Sie möglicherweise etwas praktischer ist. wmic product get nameWenn Sie jedoch nur anrufen , erhalten Sie eine Liste mit Anwendungsnamen, die Sie einfach kopieren, in einen Texteditor einfügen und in das Tabellenkalkulationsformat konvertieren können.

Alternativ können Sie Folgendes eingeben:

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

Dadurch wird eine TXT-Datei mit der Liste der Programme ausgegeben. Sie können das dann in eine Tabelle einfügen, wenn Sie möchten.

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


Sie können auch die Datei csv.xsl verwenden, um die Ausgabe in eine CSV-Ergebnisliste zu formatieren:

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

oder die Datei htable.xsl, um eine HTML-Ergebnistabelle zu erstellen:

wmic /output:C:\InstallList.htm product get /format:hform.xsl
yannis
quelle
2
Wenn Sie am Ende> InstallList.txt hinzufügen, erhalten Sie eine Textdatei mit der Ausgabe. Das aktuelle Verzeichnis, in dem Sie sich befinden, ist das Verzeichnis, in dem die Datei erstellt wird. Sie können auch InstallDate nach der Version hinzufügen. Hier wird das Datum angezeigt, an dem das Produkt installiert wurde. Dies ist praktisch, um alle vom Hersteller installierten Programme zu sortieren. Sie sollten in der Lage sein, diese Textdatei in Excel zu öffnen und die Dinge bei Bedarf ein wenig zu sortieren.
John Dyer
8
Leider scheint es nicht die gleiche Liste wie in Programme und Funktionen zu generieren: Es gibt mehrere Anwendungen, die in den ersteren nicht angezeigt werden, und einige, die in den letzteren nicht vorhanden sind. Einige Elemente, die nicht in der wmicListe aufgeführt sind: Meine installierten Steam-Spiele, Notepad ++, Winmerge, Googles Music Manager . Elemente, die in Programmen und Funktionen nicht angezeigt werden : Java Auto Updater, Sicherheitsupdate für CAPICOM (KB931906) . Ich habe versucht, es von einem Administrator-CMD auszuführen, aber die generierte Auflistung war dieselbe.
Chuim
1
Diese Frage bei StackOverflow erklärt irgendwie, warum: stackoverflow.com/questions/673233/…
Chuim
Ich habe einen ähnlichen Befehl benutzt, aber das hat nicht wenige s / w Namen gegeben. Beispiel. Propros, Klirren usw. Wie kann man das und ähnliches einfügen?
Satya Prakash
8

Führen Sie wmic product getden Befehl " Ausführen" aus , um eine Liste der installierten Software zu erhalten. Die Liste sollte genau mit der Liste der Programme zum Hinzufügen / Entfernen übereinstimmen.

Sie können es vermutlich dazu bringen, in einem bestimmten Format auszugeben, aber ich habe es nicht ausprobiert.

(Verwenden Sie wmic product get /?diese Option , um die Parameter einschließlich der Ausgabeformatierung anzuzeigen. Ich habe versucht, sie hier einzuschließen, aber die Formatierung stimmte nicht ganz.)

Mark Allen
quelle
Ha - Ich habe dich trotzdem aufgewertet, weil du die Links gefunden und eingeschlossen hast, um sie spezifisch in XML auszugeben. Gut gemacht. :)
Mark Allen
Die Ausgabe, die ich erhalte, entspricht nicht genau den Listen für Software. Irgendwelche Ideen warum?
Joel B
Es scheint alle Bestandteile zu enthalten.
Mark Allen
Gibt es eine Möglichkeit, Software von Benutzern installieren zu lassen? Möglicherweise verursacht ein benutzerbezogenes Problem, dass nicht die gesamte Software in die Liste kommt. Obwohl ich nur diese Maschine benutze.
Satya Prakash
5

Wie bereits erwähnt, können Sie diese Informationen mit einer WMI-Abfrage für Win32_Product-Objekte abrufen. PowerShell speichert es sogar in einer CSV-Datei, wenn Sie möchten.

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

Sie sollten jedoch nach Win32_Product-Problemen suchen . Es sind nicht nur Kaugummis und Lutscher.

Patrick Seymour
quelle
Ich genieße immer eine alternative Herangehensweise, besonders wenn es um Powershell geht.
Alban
Hier ist ein weiterer PowerShell-Befehl, der den Trick ausführt : Get-ItemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall * | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize Sie können "> outputfile" hinzufügen, um die Ausgabe zu speichern. Sehen Sie mehr hier: howtogeek.com/165293/… oder hier: theitbros.com/…
yosh m
Beachten Sie, dass Sie für alle anderen Benutzer, die den Befehl @ yoshm ausführen, ein anderes \ zwischen Uninstall und * benötigen. Der Befehl sollte sein:Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table
Stephenwade
4

WMIC funktioniert auf einem Server nur, wenn Sie dies explizit im Menü installiertManagement and Monitoring ToolsAdd/Remove Windows Components haben .

Eine andere Lösung besteht darin, die Registrierung aufzurufen und alle deinstallierbaren Programme anzuzeigen. Gehen Sie dazu zu:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Sie müssen auf jeden UninstallOrdner einzeln klicken, um den Wert anzuzeigen. Stattdessen können Sie mit der rechten Maustaste auf den Ordner klicken und Exportieren auswählen . Stellen Sie sicher, dass der Exportbereich nur den ausgewählten Zweig enthält :

Ausgewählte Filiale

Dann können Sie die .regDatei in Notepad ++ öffnen , aber Sie werden eine Menge zusätzlicher Informationen zu jeder Anwendung erhalten:

.reg

Sie können alle Zeilen entfernen , die nicht mit einer "DisplayName" Übereinstimmung mit dem folgenden regulären Ausdruck beginnen :

^(?!"DisplayName").+

Dann können Sie entweder einen String entfernen "DisplayName"oder den folgenden regulären Ausdruck" abgleichen :

("DisplayName"="|")

Anschließend können Sie doppelte Zeilen entfernen , indem Sie auf dem folgenden regulären Ausdruck übereinstimmen :

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

Oder Sie können die Zeilen nur alphabetisch sortieren und dann die leeren löschen

KyleMit
quelle
3

Der einfachste Weg, den ich gefunden habe, ist die Ausführung von Piriform's Cleaner.
Dies hat eine Schaltfläche bei Extras -> Deinstallieren -> "In Textdatei speichern"

user167328
quelle
1
Das OP bat um eine integrierte Lösung, da er nichts installieren kann (ok, es gibt CCleaner portable, aber das ist nicht der Punkt). Und die Ausgabe sollte Copy & Paste unterstützen
Nixda
1
Ich verstehe die durch das OP auferlegte Einschränkung, aber diese Methode erzeugte tatsächlich eine so vollständige Liste, wie sie in den Programmen und Funktionen gezeigt wird (wie meine Kommentare zur Hauptantwort besagen, hat wmicdies nicht erreicht).
Chuim
0

Unter Windows 7 können Sie ein PowerShell-Skript verwenden:

Öffnen Sie PowerShell, indem Sie auf die StartSchaltfläche klicken und powershellin das Suchfeld eingeben .

Geben Sie dann den folgenden Befehl in das PowerShell-Fenster ein:

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

Sie können alle Felder entfernen: DisplayName, DisplayVersion usw., wenn Sie sie nicht benötigen.

Wenn Sie die Ausgabe in einer Datei speichern möchten, verwenden Sie die Umleitung:

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

Zwei andere, bisher nicht erwähnte Nicht-Befehlszeilenlösungen sind:

  1. MyUninstaller - ein Freeware-Programm von NirSoft, das neben der Deinstallation auch eine umfassende Liste aller installierten Programme mit vielen zusätzlichen Informationen nach HTML exportieren kann. Es hat den Vorteil, tragbar zu sein. Obwohl es nicht "eingebaut" ist, können Sie es von einem USB-Laufwerk ausführen. Sie finden es hier .

  2. Belarc Advisor - ein Freeware-Programm (für den persönlichen Gebrauch), das Sicherheitsanalysen und eine umfassende Bestandsaufnahme der Hardware und Software Ihres Computers durchführt. Es ist hier erhältlich . Leider müssen Sie es installieren, damit es die Anforderungen des OP nicht vollständig erfüllt, aber möglicherweise auch die Anforderungen anderer Benutzer, die die gleiche Frage haben und installieren können.

yosh m
quelle
0

Die verschlüsselte Version in c # installierte Programme über die 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 && 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
quelle