Pobierz listę zainstalowanych aplikacji z wiersza poleceń systemu Windows


34

Kiedyś widziałem faceta uruchamiającego polecenie i dostałem listę wszystkich zainstalowanych aplikacji na swoim komputerze. Jak mam to zrobic?

Chciałbym listę moich obecnie zainstalowanych aplikacji. Myślę, że jakoś wykorzystał WSH .


Odpowiedzi:


39

Jeśli korzystasz z systemu Windows Vista lub Windows 7 i nie chcesz instalować dodatkowego oprogramowania, możesz:

  1. Otwórz okno wiersza polecenia ( Windows+ R, CMD.EXE)
  2. Type wmic( Enter)
  3. Type product get name( Enter)

+1 W twojej maszynie niewiele jest rzeczy, o których WMI nie może ci teraz powiedzieć.
GAThrawn

5
tutaj napisano, że Win32_Product nie poda wszystkich informacji o zainstalowanym oprogramowaniu. Oznacza to, że nie będzie wyświetlać wszystkich programów. Powodem tego jest to, że win32_product wysyła zapytanie do bazy danych MSI w celu uzyskania listy. Ale będzie wiele programów, które nie będą miały w nim wpisu, ponieważ zostały zainstalowane z exe. W takim przypadku zapytanie o klucz rejestru dezinstalacji zawiera informacje o tych programach.
Nędzna zmienna

1
@MiserableVariable Czy to mówi? (Czy to zły link?) Jak zapytać rejestr odinstalowywania w podobny sposób? (a może wmicsam się wykorzystując ?)
JeromeJ

1
Działa również z systemem Windows 10
Turcia

5
Czy to tylko ja, czy to działa bardzo wolno?
user3083324,

27

PsInfo firmy Microsoft / Sysinternals może wyświetlić listę wszystkich zainstalowanych programów, jeśli użyjesz flagi -s podczas uruchamiania. Można również użyć opcji -c, aby wyprowadzić go jako plik csv, na przykład w programie Excel.

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

1
działa również do Win XP w przeciwieństwie do rozwiązania WMI
Gerd Klima,

Nie wyświetla wszystkich zainstalowanych programów Windows 2012 R2 x64. UżywamPsInfo ver. 1.77
Tomasito,

Ta metoda wyprodukowała 933 przedmiotów na moim laptopie, a metoda WMI wyprodukowała tylko 598. Wydawało się, że produkuje większą listę ...
Andrej Adamenko

@djhowell: Próbuję wykonać polecenie w systemie Windows 7, ale pojawia się błąd „ psinfo is not recognized as an internal or external command, operable program or batch file.”. I dzieje się tak nawet w oknie cmd z podwyższonymi prawami.
skm

14

Skrypt PowerShell, aby je wyświetlić:

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

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

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

Nie do końca wiersza poleceń, ale w tym celu osobiście korzystam z narzędzia odinstalowującego CCleaner i możesz wyeksportować listę zainstalowanego oprogramowania do pliku tekstowego:

Tekst alternatywny


2
Ironiczne jest to, że uruchomienie narzędzia Windows Powershell itp. Trwa wieki (> 5 minut), ale CCleaner jest natychmiastowy.
CAD CAD

6

Nie do końca wiersza poleceń, ale zaufany stary SIW również wykona zadanie. Podświetl Aplikacje , kliknij prawym przyciskiem → Eksportuj doCSV, HTML, TXT lub XML :

Tekst alternatywny

SIW jest darmowy i przenośny, a instalacja nie jest wymagana.


Zawsze wiedziałem, że SIW wymaga licencji, skąd czerpiesz ją jako Freeware?
El Turner

3

Powyższe rozwiązanie CCleaner wydaje się być dobrym rozwiązaniem, chyba że zdecydujesz się użyć wiersza polecenia. Używałem wcześniej CCleaner, jest to dobre narzędzie, ale nie zakładaj, że wszystko jest zarejestrowane w aplecie Dodaj / Usuń programy (ta sama lista). Istnieje wiele aplikacji korzystających z instalacji w stylu xcopy, tzn. Po prostu rozpakuj to archiwum i uruchom. Te nie pojawią się na liście.


3

Aby dodać do rozwiązania MicTech - użyj wmici przechwyć listę zainstalowanego oprogramowania do pliku:

Otwórz okno wiersza polecenia ( Windows+ R, CMD.EXE)

wmic /OUTPUT:my_software.txt product get name

2

Sysinternals psinfo.exe zapewnia najbardziej kompletne informacje ze wszystkich podanych sugestii i można go uruchomić na dowolnym komputerze z systemem Windows z wiersza polecenia bezpośrednio z wiersza polecenia CMD bez podwyższonego pobierania:

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

Po uruchomieniu tego pojawi się monit bezpieczeństwa oraz monit EULA po raz pierwszy na komputerze. Plik tekstowy zostanie zapisany na bieżącym pulpicie.

Umowę EULA można automatycznie zaakceptować w następujący sposób:

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


0

Zakodowana wersja zainstalowanych programów w języku C # za pośrednictwem rejestru 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();
        }
    }
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.