Obtenir la liste des applications installées à partir de la ligne de commande Windows

34

Une fois, j'ai vu un gars exécuter une commande et obtenir une liste de toutes les applications installées sur son ordinateur. Comment puis-je faire cela?

Je voudrais une liste de mes applications actuellement installées. Je crois qu'il a utilisé WSH en quelque sorte.

Peter Mortensen
la source
Connexes: Existe - t-il un utilitaire qui me donnera une liste de tous les programmes installés transférés dans un fichier texte pour Windows?   (non limité aux solutions en ligne de commande).
G-Man dit 'Réintégrez Monica'

Réponses:

39

Si vous utilisez Windows Vista ou Windows 7 et que vous ne souhaitez pas installer de logiciel supplémentaire, vous pouvez:

  1. Ouvrez une fenêtre de ligne de commande ( Windows+ R, CMD.EXE)
  2. Type wmic( Enter)
  3. Type product get name( Enter)
MicTech
la source
+1 Il n'y a pas beaucoup de choses sur votre machine que WMI ne puisse vous dire ces jours-ci.
GAThrawn
5
ici, il est dit que Win32_Product ne donnera pas toutes les informations sur les logiciels installés. Cela signifie que tous les logiciels ne seront pas listés. La raison en est que win32_product interroge la base de données MSI pour obtenir la liste. Mais il y aura beaucoup de logiciels qui n'auront aucune entrée car ils ont été installés à partir d'exe. Dans ce cas, l'interrogation de la clé de registre de désinstallation fournit des informations sur ces logiciels.
Misérable Variable
1
@ MisérableVariable dit-il cela? (Est-ce le mauvais lien?) Comment interroger le registre de désinstallation de la même manière? (ou peut-être en utilisant wmiclui-même?)
JeromeJ
1
Fonctionne également avec Windows 10
Turcia
5
Est-ce juste moi, ou cela fonctionne très lentement?
user3083324
27

PsInfo de Microsoft / Sysinternals peut répertorier tous les logiciels installés si vous utilisez l' indicateur -s lors de son exécution. Vous pouvez également utiliser -c pour le sortir sous forme de fichier csv à utiliser dans Excel par exemple.

C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv
djhowell
la source
1
fonctionne également sous Win XP contrairement à la solution WMI
Gerd Klima
N'affiche pas tous les logiciels installés sur Windows 2012 R2 x64. J'utilisePsInfo ver. 1.77
Tomasito
Cette méthode a produit 933 éléments sur mon ordinateur portable et la méthode WMI n'en a produit que 598. Elle semblait produire une liste plus
longue
@ djhowell: j'essaie d'exécuter la commande dans Windows 7 mais j'obtiens une erreur, " psinfo is not recognized as an internal or external command, operable program or batch file.". Et cela se produit même dans la fenêtre cmd à droits élevés.
Skm
14

Un script PowerShell pour les lister:

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

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

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

Pas exactement en ligne de commande, mais à cette fin, j'utilise personnellement l' outil de désinstallation de CCleaner et vous pouvez exporter la liste des logiciels installés dans un fichier texte:

Alt text

John T
la source
2
Plutôt ironique que les outils Windows, Powershell, etc. prennent longtemps (> 5 minutes), mais CCleaner est instantané.
CAD bloke
6

Pas tout à fait en ligne de commande non plus, mais un vieil homme de confiance fera également le travail. Sélectionnez Applications , faites un clic droit → Exporter versCSV, HTML, TXT ou XML :

Alt text

SIW est un logiciel gratuit et portable, et l'installation n'est pas requise.

Peter Mortensen
la source
J'ai toujours su que SIW exige une licence, où l'obtenez-vous en tant que Freeware?
El Turner
3

La solution ci-dessus de CCleaner semble être un moyen décent de s'y prendre, sauf si vous êtes déterminé à utiliser la ligne de commande. J'ai déjà utilisé CCleaner, c'est un bon outil, mais ne supposez pas que tout est enregistré dans l'applet Ajout / Suppression de programmes (la même liste). De nombreuses applications utilisent l'installation de style xcopy, c'est-à-dire qu'il suffit de décompresser cette archive et de l'exécuter. Ceux-ci n'apparaîtront pas dans la liste.

JMD
la source
3

Pour ajouter à la solution de MicTech - utilisez wmicet enregistrez la liste des logiciels installés dans un fichier:

Ouvrez une fenêtre de ligne de commande ( Windows+ R, CMD.EXE)

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

Sysinternals psinfo.exe fournit les informations les plus complètes de toutes les suggestions données. Il peut être exécuté sur tout PC Windows à partir de la ligne de commande directement à partir d'une invite CMD élevée, sans téléchargement permanent:

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

Vous obtiendrez une invite de sécurité lorsque vous l'exécuterez et une invite de CLUF la première fois sur une machine. Un fichier texte sera enregistré sur le bureau actuel.

Le CLUF peut être automatiquement accepté comme ceci:

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

Il existe une application portable appelée Showmysoft. Il montrera le logiciel installé sur la machine locale et les machines distantes et peut exporter au format PDF et CSV . L'installation n'est pas requise. Télécharger depuis http://spidersoft.in/showmysoft/ .

La configuration minimale requise est Microsoft .NET Framework 2.0.

Jacob Justin
la source
0

La version codée dans les programmes installés en C # via le registre 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
la source