Elenca tutto il software installato su PC


30

Esiste qualcosa incorporato in Windows che mi consenta di elencare tutto il software installato su un computer in un modo che può essere copiato / incollato in un foglio di calcolo? So che esiste un software in grado di farlo, ma non riesco a installare nulla. Preferirei non usare un file batch se possibile, ma immagino che sarà l'unico modo. Idealmente, sarei in grado di fornire le stesse informazioni mostrate nella vista (non espansa) del modulo Installazione applicazioni.


È possibile scrivere un file batch per eseguire una query sul database di Windows Installer, ma ciò potrebbe non rilevare tutto.

Ho scritto un'app che richiede queste informazioni al registro e, sebbene l'app non la metta nel formato desiderato, la parte del codice può essere copiata e facilmente modificata per farlo, ecco il link alla fonte: pulsarsoftware.org/Projects/ProcessManager.html
MaQleod

1
In Windows PowerShell, si può provare: Get-WmiObject -Class Win32_Product. Vedi qui per maggiori dettagli.
rishimaharaj,

Risposte:


40

Accendi la console e digita:

wmic product get name,version

Ci vuole un po 'di tempo, ma otterrai l'elenco completo dei programmi installati. WMIC è la versione console di Strumentazione gestione Windows, disponibile da Windows 2000 in poi. Seguendo le istruzioni qui e qui , puoi dire a WMIC di eseguire l'output in un formato XML, che potrebbe essere un po 'più conveniente per te. Tuttavia, basta chiamare wmic product get nameper ottenere un elenco di nomi di applicazioni, che puoi facilmente copiare e incollare in un editor di testo e convertirli in formato foglio di calcolo.

In alternativa, inserisci:

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

Ciò genererà un file TXT con l'elenco dei programmi. Se lo desideri, puoi incollarlo in un foglio di calcolo.

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


Inoltre è possibile utilizzare il file csv.xsl per formattare l'output in un elenco di risultati CSV:

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

o il file htable.xsl per creare una tabella di risultati HTML:

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

2
Se aggiungi> InstallList.txt alla fine otterrai un file di testo contenente l'output. La directory corrente in cui ti trovi è dove verrà creato il file. Inoltre è possibile aggiungere, InstallDate dopo la versione. Questo mostrerà la data di installazione del prodotto. Questo è utile per risolvere qualsiasi programma installato dal produttore. Dovresti essere in grado di aprire questo file di testo in Excel e ordinare un po 'le cose se necessario.
John Dyer,

8
Purtroppo non sembra generare lo stesso elenco mostrato in Programmi e funzionalità: ci sono diverse applicazioni che non compaiono nella prima e alcune che lo fanno ma non esistono nella seconda. Alcuni elementi che non compaionowmic nell'elenco: i miei giochi Steam installati, Notepad ++, Winmerge, Music Manager di Google . Elementi che non vengono visualizzati in Programmi e funzionalità: Java Auto Updater, Aggiornamento della sicurezza per CAPICOM (KB931906) . Ho provato a eseguirlo da un amministratore CMD ma l'elenco generato era lo stesso.
Chuim,

1
Questa domanda a StackOverflow spiega il motivo per cui un pò: stackoverflow.com/questions/673233/...
Chuim

Ho usato un comando simile ma che non ha dato pochi nomi in bianco e nero. Esempio. Propros, tintinnio, ecc. Come includerlo e simili?
Satya Prakash,


8

Esegui wmic product getper ottenere un elenco di software installato, dovrebbe essere esattamente lo stesso elenco di aggiungi / rimuovi programmi.

Presumibilmente puoi farlo uscire in un formato specifico, ma non l'ho provato.

(Utilizzato wmic product get /?per vedere i parametri tra cui la formattazione dell'output, ho provato a includerlo qui ma la formattazione non era del tutto corretta.)


Ah - Ti ho comunque votato perché hai trovato e incluso i link per renderlo specifico in XML. Buon lavoro. :)
Mark Allen,

L'output che sto ottenendo non è esattamente quello che elenca Installazione applicazioni. Qualche idea sul perché?
Gioele B,

Sembra includere tutte le parti componenti.
Mark Allen,

C'è un modo per far installare il software da tutti gli utenti. Forse il problema relativo all'utente sta causando non tutto il software che entra nell'elenco. Anche se uso solo questa macchina.
Satya Prakash,

5

Come altri hanno già detto, è possibile ottenere queste informazioni con una query WMI per gli oggetti Win32_Product. PowerShell lo scaricherà anche in un file CSV per te, se lo desideri.

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

Tuttavia, è necessario cercare problemi Win32_Product . Non è tutto gumdrops e lecca-lecca.


Mi piace sempre un approccio alternativo alle cose, specialmente quando coinvolge Powershell.
Alban,

Ecco un altro comando di PowerShell per eseguire il trucco: Get-ItemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall * | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize È possibile aggiungere "> outputfile" per salvare l'output. Vedi di più qui: howtogeek.com/165293/… o qui: theitbros.com/…
yosh m

Nota per chiunque provi il comando di @ yoshm, è necessario un altro \ tra Uninstall e *. Il comando dovrebbe essere:Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table
stephenwade, il

4

WMIC non funzionerà su un server a meno che non sia stato esplicitamente installato Management and Monitoring Toolsnel Add/Remove Windows Componentsmenu .

Un'altra soluzione è quella di accedere al registro e guardare tutti i programmi non installabili andando a:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Dovrai fare clic su ognuno di essi singolarmente per vedere il valore, quindi puoi fare clic con il tasto destro sulla Uninstallcartella e selezionare Esporta . Assicurarsi che l' intervallo di esportazione sia impostato per includere solo il ramo selezionato :

Filiale selezionata

Quindi puoi aprire il .regfile in notepad ++, ma otterrai molte informazioni extra su ogni applicazione:

reg

Puoi sbarazzarti di tutte le linee che non iniziano con la "DisplayName" corrispondenza con la seguente regex :

^(?!"DisplayName").+

Quindi è possibile rimuovere una stringa "DisplayName" o "abbinando la seguente regex :

("DisplayName"="|")

Quindi è possibile rimuovere eventuali righe duplicate abbinando la seguente regex :

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

Oppure puoi semplicemente ordinare le linee in ordine alfabetico e quindi eliminare quelle vuote


3

Il modo più semplice che ho trovato è eseguire il ccleaner di Piriform.
Questo ha un pulsante in Strumenti -> Disinstalla -> "salva nel file di testo"


1
Il PO ha chiesto un built-in soluzione dal momento che non può installare nulla (ok, c'è CCleaner portatile, ma questo non è il punto). E l'output dovrebbe supportare il copia e incolla
nixda,

1
Comprendo i limiti imposti dal PO, ma questo metodo ha in effetti generato un elenco completo come mostrato da Programmi e funzionalità (come affermano i miei commenti sulla risposta principale wmic).
Chuim,

0

Su Windows 7 è possibile utilizzare uno script PowerShell:

Apri PowerShell facendo clic sul Startpulsante e digitando powershellnel campo di ricerca.

Quindi immettere il comando seguente nella finestra di PowerShell:

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

Puoi rimuovere uno qualsiasi dei campi: DisplayName, DisplayVersion, ecc. Se non ne hai bisogno.

Se si desidera salvare l'output in un file, utilizzare il reindirizzamento:

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

0

Altre due soluzioni non a riga di comando non menzionate in precedenza sono:

  1. MyUninstaller - un programma freeware di NirSoft che, oltre alla disinstallazione, può anche esportare in HTML un elenco completo di tutto il software installato che include molte informazioni aggiuntive. Ha il vantaggio di essere portatile. Sebbene non sia "incorporato", è possibile eseguirlo da un'unità USB. Puoi trovarlo qui .

  2. Belarc Advisor - un programma freeware (per uso personale) che esegue analisi di sicurezza e inventario completo dell'hardware e del software del tuo computer. E 'disponibile qui . Sfortunatamente, è necessario installarlo, quindi non soddisfa pienamente le esigenze del PO, ma può soddisfare le esigenze di altri che hanno la stessa domanda e sono in grado di installare.


0

La versione codificata nei programmi installati c # tramite registro

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


    }
}
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.