Liste de tous les logiciels installés sur PC


30

Y a-t-il quelque chose de intégré à Windows qui me permettrait de répertorier tous les logiciels installés sur un ordinateur d'une manière qui peut être copiée / collée dans une feuille de calcul? Je sais qu'il existe des logiciels qui peuvent le faire, mais je ne peux rien installer. Je préfère ne pas utiliser de fichier batch si possible, mais j'imagine que ce sera la seule façon. Idéalement, je serais en mesure de produire les mêmes informations que celles affichées sur la vue (non développée) du formulaire Ajout / Suppression de programmes.


Vous pourriez éventuellement écrire un fichier de commandes pour interroger la base de données Windows Installer, mais cela pourrait ne pas tout attraper.

J'ai écrit une application qui interroge le registre pour ces informations, et bien que l'application ne le mette pas au format que vous souhaitez, la partie du code peut être copiée et facilement modifiée pour ce faire, voici le lien vers la source: pulsarsoftware.org/Projects/ProcessManager.html
MaQleod

1
Dans Windows PowerShell, vous pouvez essayer: Get-WmiObject -Class Win32_Product. Voir ici pour plus de détails.
rishimaharaj

Réponses:


40

Allumez votre console et tapez:

wmic product get name,version

Cela prend un certain temps, mais vous obtiendrez la liste complète des programmes installés. WMIC est la version console de Windows Management Instrumentation, disponible à partir de Windows 2000 et versions ultérieures. En suivant les instructions ici et ici , vous pouvez dire à WMIC de sortir au format XML, ce qui pourrait être un peu plus pratique pour vous. Cependant, un simple appel wmic product get namevous donnera une liste de noms d'applications, que vous pouvez facilement copier-coller dans un éditeur de texte et convertir au format tableur.

Sinon, entrez:

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

Cela produira un fichier TXT avec la liste des programmes. Vous pouvez ensuite coller cela dans une feuille de calcul, si vous le souhaitez.

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


Vous pouvez également utiliser le fichier csv.xsl pour formater la sortie dans une liste de résultats CSV:

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

ou le fichier htable.xsl pour créer un tableau HTML de résultats:

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

2
Si vous ajoutez> InstallList.txt à la fin, vous obtiendrez un fichier texte contenant la sortie. Le répertoire actuel où vous vous trouvez est l'endroit où le fichier sera créé. Vous pouvez également ajouter, InstallDate après la version. Cela montrera la date à laquelle le produit a été installé. Ceci est pratique pour trier tous les programmes installés par la fabrication. Vous devriez pouvoir ouvrir ce fichier texte dans Excel et trier un peu les choses si nécessaire.
John Dyer

8
Malheureusement, il ne semble pas générer la même liste que celle indiquée dans Programmes et fonctionnalités: il existe plusieurs applications qui n'apparaissent pas dans la première et quelques-unes qui existent mais n'existent pas dans la seconde. Certains éléments qui n'apparaissent pas dans la wmicliste: mes jeux Steam installés, Notepad ++, Winmerge, Google Music Manager . Éléments qui n'apparaissent pas dans les programmes et fonctionnalités: Java Auto Updater, mise à jour de sécurité pour CAPICOM (KB931906) . J'ai essayé de l'exécuter à partir d'un CMD administrateur mais la liste générée était la même.
Chuim

1
Cette question sur StackOverflow explique un peu pourquoi: stackoverflow.com/questions/673233/…
Chuim

J'ai utilisé une commande similaire mais qui n'a pas donné peu de nom s / w. Exemple. Propros, clink, etc. Comment inclure cela et similaire?
Satya Prakash


8

Exécutez wmic product getpour obtenir une liste des logiciels installés, cela devrait être exactement la même liste que pour ajouter / supprimer des programmes.

Vous pouvez supposément le faire sortir dans un format spécifique, mais je ne l'ai pas essayé.

(Utilisez wmic product get /?pour voir les paramètres, y compris le formatage de sortie, j'ai essayé de l'inclure ici, mais le formatage n'était pas tout à fait correct.)


Ha - Je vous ai quand même voté parce que vous avez trouvé et inclus les liens pour le rendre spécifiquement en XML. Bon travail. :)
Mark Allen

La sortie que j'obtiens n'est pas exactement celle des listes Ajout / Suppression de programmes. Des idées pourquoi?
Joel B

Il semble inclure tous les composants.
Mark Allen

Existe-t-il un moyen de faire installer le logiciel par n'importe quel utilisateur? Il est possible qu'un problème lié à l'utilisateur n'entraîne pas tous les logiciels dans la liste. Bien que j'utilise uniquement cette machine.
Satya Prakash

5

Comme d'autres l'ont mentionné, vous pouvez obtenir ces informations avec une requête WMI pour les objets Win32_Product. PowerShell le déposera même dans un fichier CSV pour vous si vous le souhaitez.

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

Cependant, vous devez rechercher les problèmes liés à Win32_Product . Ce ne sont pas toutes des gommes et des sucettes.


J'apprécie toujours une approche alternative des choses, surtout quand cela implique Powershell.
Alban

Voici une autre commande PowerShell pour faire l'affaire: Get-ItemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall * | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize Vous pouvez ajouter "> fichier de sortie" pour enregistrer la sortie. Voir plus ici: howtogeek.com/165293/… ou ici: theitbros.com/…
yosh m

Remarque pour quiconque essaie la commande de @ yoshm, vous avez besoin d'un autre \ entre Désinstaller et *. La commande doit être:Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table
stephenwade

4

WMIC ne fonctionnera sur un serveur que si vous l'avez explicitement installé Management and Monitoring Toolsdans le Add/Remove Windows Componentsmenu .

Une autre solution consiste à aller dans le Registre et à regarder tous les programmes désinstallables en allant à:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Vous devrez cliquer sur chacun individuellement pour voir la valeur, donc à la place, vous pouvez cliquer avec le bouton droit sur le Uninstalldossier et sélectionner Exporter . Assurez-vous que la plage d'exportation est définie pour inclure uniquement la branche sélectionnée :

Succursale sélectionnée

Ensuite, vous pouvez ouvrir le .regfichier dans notepad ++, mais vous obtiendrez beaucoup d'informations supplémentaires sur chaque application:

.reg

Vous pouvez vous débarrasser de toutes les lignes qui ne commencent pas "DisplayName" par une correspondance avec l'expression régulière suivante :

^(?!"DisplayName").+

Ensuite, vous pouvez supprimer soit une chaîne, "DisplayName" soit une "correspondance sur l'expression régulière suivante :

("DisplayName"="|")

Ensuite, vous pouvez supprimer toutes les lignes en double en les faisant correspondre sur l'expression régulière suivante :

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

Ou vous pouvez simplement trier les lignes par ordre alphabétique , puis supprimer les lignes vides


3

Le moyen le plus simple que j'ai trouvé est d'exécuter le ccleaner de piriform.
Cela a un bouton dans Outils -> Désinstaller -> "enregistrer dans un fichier texte"


1
L'OP a demandé une intégré solution car il ne peut pas installer quoi que ce soit (ok, il y a Ccleaner Portable, mais c'est pas le point). Et la sortie devrait prendre en charge le copier-coller
nixda

1
Je comprends la limitation imposée par l'OP, mais cette méthode a en fait généré une liste aussi complète que celle indiquée par Programmes et fonctionnalités (comme le disent mes commentaires sur la réponse principale, wmicn'a pas atteint cet objectif).
Chuim

0

Sous Windows 7, vous pouvez utiliser un script PowerShell:

Ouvrez PowerShell en cliquant sur le Startbouton et en tapant powershelldans le champ de recherche.

Entrez ensuite la commande suivante dans la fenêtre PowerShell:

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

Vous pouvez supprimer l'un des champs: DisplayName, DisplayVersion, etc. si vous n'en avez pas besoin.

Si vous souhaitez enregistrer la sortie dans un fichier, utilisez la redirection:

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

0

Deux autres solutions hors ligne de commande non mentionnées précédemment sont:

  1. MyUninstaller - un programme gratuit de NirSoft qui, en plus de la désinstallation, peut également exporter au format HTML une liste complète de tous les logiciels installés qui comprend de nombreuses informations supplémentaires. Il a l'avantage d'être portable. Bien qu'il ne soit pas «intégré», vous pouvez l'exécuter à partir d'une clé USB. Vous pouvez le trouver ici .

  2. Belarc Advisor - un programme gratuit (à usage personnel) qui effectue une analyse de sécurité et un inventaire complet du matériel et des logiciels de votre ordinateur. Il est disponible ici . Malheureusement, vous devez l'installer afin qu'il ne réponde pas pleinement aux besoins du PO, mais peut répondre aux besoins d'autres personnes qui ont la même question et sont en mesure d'installer.


0

La version encodée dans les programmes installés c # via le registre

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();
        }


    }
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.