2009-11-10 19:05:44 +0000 2009-11-10 19:05:44 +0000
34
34

Pobierz listę zainstalowanych aplikacji z linii poleceń Windows

Kiedyś widziałem, jak facet uruchamiał polecenie i dostałem listę wszystkich zainstalowanych aplikacji na swoim komputerze. Jak to zrobić?

Chciałbym otrzymać listę aktualnie zainstalowanych aplikacji. Wierzę, że użył WSH w jakiś sposób.

Odpowiedzi (8)

40
40
40
2009-11-10 19:15:35 +0000

Jeśli używasz Windows Vista lub Windows 7 i nie chciałeś instalować dodatkowego oprogramowania, możesz:

  1. Otworzyć okno linii poleceń (Windows + R, CMD.EXE)
  2. Wpisz wmic (Enter)
  3. Wpisz product get name (Enter) 3.
27
27
27
2009-11-10 19:19:33 +0000

PsInfo z Microsoft/Sysinternals może wyświetlić listę wszystkich zainstalowanych programów, jeśli podczas ich uruchamiania użyjesz flagi -s. Możesz również użyć -c, aby wypisać ją jako plik csv do użycia na przykład w Excelu.

C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv
14
14
14
2009-11-10 19:17:09 +0000

Skrypt PowerShell, aby wyświetlić ich listę:

$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 linia poleceń, ale do tego celu osobiście używam narzędzia CCleaner’s do deinstalacji, a listę zainstalowanego oprogramowania można wyeksportować do pliku tekstowego:

3
3
3
2015-08-29 19:19:55 +0000

Aby dodać do MicTech’s solution - użyj wmic i przechwyć listę zainstalowanego oprogramowania do pliku:

Otwórz okno linii poleceń (Windows + R, CMD.EXE)

wmic /OUTPUT:my_software.txt product get name
3
3
3
2009-11-10 19:43:46 +0000

Powyższe rozwiązanie CCleaner wydaje się być przyzwoitym sposobem, chyba że jesteś zdeterminowany, aby użyć linii poleceń. Używałem już 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, które używają instalacji w stylu xcopy-, tzn. po prostu rozpakuj to archiwum i uruchom. Nie pojawią się one na liście.

2
2
2
2015-05-29 15:38:14 +0000

Sysinternals psinfo.exe dostarcza najbardziej kompletnych informacji o wszystkich podanych sugestiach i może być uruchomiony na każdym komputerze z systemem Windows z linii poleceń bezpośrednio z podwyższonego monitu CMD, bez konieczności ciągłego pobierania:

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

Otrzymasz monit bezpieczeństwa podczas jego uruchamiania oraz monit EULA za pierwszym razem na maszynie. Plik tekstowy zostanie zapisany na aktualnym pulpicie.

EULA może zostać automatycznie zaakceptowana w następujący sposób:

\live.sysinternals.com\tools\psinfo.exe -s /accepteula > %userprofile%\Desktop\_psinfo.txt
0
0
0
2017-07-12 15:37:28 +0000

Wersja zakodowana w C# zainstalowała programy poprzez rejestr 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();
        }
    }
}
0
0
0
2013-09-02 08:52:09 +0000

Istnieje przenośna aplikacja o nazwie Showmysoft. Pokaże ona zainstalowane oprogramowanie na lokalnej maszynie i maszynach zdalnych i może eksportować do PDF i do CSV . Instalacja nie jest wymagana. Pobierz z http://spidersoft.in/showmysoft/ .

Minimalne wymagania systemowe to Microsoft .NET Framework 2.0.