Ottieni l'elenco delle applicazioni installate dalla riga di comando di Windows


34

Una volta ho visto un ragazzo eseguire un comando e ho ottenuto un elenco di tutte le applicazioni installate sul suo computer. Come faccio a fare questo?

Vorrei un elenco delle mie applicazioni attualmente installate. Credo che abbia usato WSH in qualche modo.


Risposte:


39

Se si utilizza Windows Vista o Windows 7 e non si desidera installare software aggiuntivo, è possibile:

  1. Apri una finestra della riga di comando ( Windows+ R, CMD.EXE)
  2. Tipo wmic( Enter)
  3. Tipo product get name( Enter)

+1 Non c'è molto sulla tua macchina che WMI non può dirti in questi giorni.
GAThrawn

5
qui dice che Win32_Product non fornirà tutte le informazioni sui software installati. Ciò significa che non elencherà tutti i software. Il motivo è che win32_product interroga il database MSI per ottenere l'elenco. Ma ci saranno molti software che non avranno una voce in esso poiché sono stati installati da exe. In questo caso, l'interrogazione della chiave di registro di disinstallazione fornisce informazioni su questi software.
Miserabile variabile

1
@MiserableVariable Lo dice? (È il link sbagliato?) Come si potrebbe interrogare il registro di disinstallazione in modo simile? (o forse usando wmicse stesso?)
JeromeJ

1
Funziona anche con Windows 10
Turcia il

5
Sono solo io o questo funziona molto lentamente?
user3083324

27

PsInfo di Microsoft / Sysinternals può elencare tutto il software installato se si utilizza il flag -s quando lo si esegue. Puoi anche usare -c per emetterlo come file CSV da usare in Excel, ad esempio.

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

1
funziona anche su Win XP in contrasto con la soluzione WMI
Gerd Klima,

Non mostra tutto il software installato acceso Windows 2012 R2 x64. Sto usandoPsInfo ver. 1.77
Tomasito

Questo metodo ha prodotto 933 elementi sul mio laptop e il metodo WMI ha prodotto solo 598. Sembrava che producesse un elenco più ampio ...
Andrej Adamenko,

@djhowell: Sto provando a eseguire il comando in Windows 7 ma visualizzo un errore " psinfo is not recognized as an internal or external command, operable program or batch file.". E questo succede anche nella finestra cmd con diritti elevati.
skm,

14

Uno script di PowerShell per elencarli:

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

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

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

Non esattamente a riga di comando, ma a questo scopo uso personalmente lo strumento di disinstallazione di CCleaner e puoi esportare l'elenco dei software installati in un file di testo:

Testo alternativo


2
Piuttosto ironico che gli strumenti di Windows Powershell ecc. Impieghino molto tempo per funzionare (> 5 minuti) ma CCleaner è istantaneo.
Bloke CAD

6

Non esattamente neanche la riga di comando, ma anche il vecchio fidato SIW farà il suo lavoro. Evidenzia Applicazioni , fai clic con il pulsante destro del mouse → Esporta inCSV, HTML, TXT o XML :

Testo alternativo

SIW è freeware e portatile e l'installazione non è richiesta.


Ho sempre saputo che SIW richiede una licenza, dove la ottieni come Freeware?
El Turner,

3

La soluzione CCleaner sopra sembra un modo decente per farlo, a meno che tu non sia determinato a usare la riga di comando. Ho usato CCleaner prima, è un buon strumento Ma non dare per scontato che tutto sia registrato nell'applet Installazione applicazioni (lo stesso elenco). Esistono molte app che utilizzano l'installazione in stile xcopy, ovvero semplicemente decomprimere questo archivio ed eseguirlo. Quelli non verranno visualizzati nell'elenco.


3

Per aggiungere alla soluzione di MicTech, utilizzare wmice acquisire l'elenco dei software installati in un file:

Apri una finestra della riga di comando ( Windows+ R, CMD.EXE)

wmic /OUTPUT:my_software.txt product get name

2

Sysinternals psinfo.exe fornisce le informazioni più complete di tutti i suggerimenti forniti e può essere eseguito su qualsiasi PC Windows dalla riga di comando direttamente da un prompt CMD elevato, senza download permanente:

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

Riceverai un prompt di sicurezza quando lo eseguirai e un prompt EULA la prima volta su un computer. Un file di testo verrà salvato sul desktop corrente.

L'EULA può essere automaticamente accettato in questo modo:

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


0

La versione codificata nei programmi installati C # tramite il registro di 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();
        }
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.