Dapatkan daftar aplikasi yang diinstal dari baris perintah Windows

34

Saya pernah melihat seorang pria menjalankan perintah dan mendapat daftar semua aplikasi yang terinstal di komputernya. Bagaimana saya melakukan ini?

Saya ingin daftar aplikasi yang saya instal saat ini. Saya percaya dia entah bagaimana menggunakan WSH .

Peter Mortensen
sumber
Terkait: Apakah ada utilitas yang akan memberi saya daftar semua program yang diinstal dibuang ke file teks untuk Windows?   (tidak terbatas pada solusi baris perintah).
G-Man Mengatakan 'Reinstate Monica'

Jawaban:

39

Jika Anda menggunakan Windows Vista atau Windows 7 dan Anda tidak ingin menginstal perangkat lunak tambahan, Anda dapat:

  1. Buka jendela baris perintah ( Windows+ R, CMD.EXE)
  2. Jenis wmic( Enter)
  3. Jenis product get name( Enter)
MicTech
sumber
+1 Tidak banyak tentang mesin Anda yang WMI tidak dapat memberi tahu Anda hari ini.
GAT Diambil
5
di sini dikatakan bahwa Win32_Product tidak akan memberikan semua informasi tentang perangkat lunak yang diinstal. Itu berarti, itu tidak akan mencantumkan semua perangkat lunak. Alasannya adalah, win32_product menanyakan database MSI untuk mendapatkan daftar. Tetapi akan ada banyak perangkat lunak yang tidak akan memiliki entri di dalamnya karena mereka diinstal dari exe. Dalam hal ini, meminta kunci registri penghapusan instalasi memberikan informasi tentang perangkat lunak ini.
Variabel yang
1
@MiserableVariable Apakah dikatakan seperti itu? (Apakah ini tautan yang salah?) Bagaimana cara orang menanyakan registry uninstall dengan cara yang sama? (atau mungkin dengan menggunakan wmicdirinya sendiri?)
JeromeJ
1
Juga bekerja dengan Windows 10
Turcia
5
Apakah hanya saya, atau ini berjalan sangat lambat?
user3083324
27

PsInfo dari Microsoft / Sysinternals dapat mendaftar semua perangkat lunak yang diinstal jika Anda menggunakan flag -s ketika Anda menjalankannya. Anda juga dapat menggunakan -c untuk menampilkannya sebagai file csv untuk digunakan di Excel misalnya.

C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv
djhowell
sumber
1
juga bekerja sebelum Win XP berbeda dengan solusi WMI
Gerd Klima
Tidak menampilkan semua perangkat lunak yang diinstal pada Windows 2012 R2 x64. Saya menggunakanPsInfo ver. 1.77
Tomasito
Metode ini menghasilkan 933 item di laptop saya dan metode WMI hanya menghasilkan 598. Tampaknya menghasilkan daftar yang lebih besar ...
Andrej Adamenko
@djhowell: Saya mencoba menjalankan perintah di Windows 7 tetapi saya mendapatkan kesalahan, " psinfo is not recognized as an internal or external command, operable program or batch file.". Dan ini terjadi bahkan di jendela cmd hak tinggi.
skm
14

Skrip PowerShell untuk mencantumkannya:

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

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

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

Tidak persis baris perintah, tetapi untuk tujuan ini saya pribadi menggunakan alat uninstall CCleaner , dan Anda dapat mengekspor daftar perangkat lunak yang diinstal ke file teks:

Teks alternatif

John T
sumber
2
Agak ironis bahwa alat Windows Powershell dll butuh waktu lama untuk dijalankan (> 5 menit) tetapi CCleaner instan.
CAD pria
6

Tidak juga baris perintah, tapi SIW tua yang terpercaya akan melakukan pekerjaan dengan baik. Sorot Aplikasi , klik kanan → Ekspor KeCSV, HTML, TXT atau XML :

Teks alternatif

SIW adalah freeware dan portable, dan instalasi tidak diperlukan.

Peter Mortensen
sumber
Saya selalu tahu SIW untuk memerlukan lisensi, di mana Anda mendapatkannya sebagai Freeware?
El Turner
3

Solusi CCleaner di atas sepertinya merupakan cara yang layak untuk melakukannya, kecuali Anda bertekad untuk menggunakan baris perintah. Saya telah menggunakan CCleaner sebelumnya, ini adalah alat yang bagus Tapi jangan menganggap bahwa semuanya terdaftar di applet Tambah / Hapus Program (daftar yang sama). Ada banyak aplikasi yang menggunakan instalasi bergaya xcopy, yaitu cukup unzip arsip ini dan jalankan. Itu tidak akan muncul dalam daftar.

JMD
sumber
3

Untuk menambah solusi MicTech - gunakan wmicdan tangkap daftar perangkat lunak yang diinstal ke file:

Buka jendela baris perintah ( Windows+ R, CMD.EXE)

wmic /OUTPUT:my_software.txt product get name
Pertarungan
sumber
2

Sysinternals psinfo.exe memberikan informasi paling lengkap dari semua saran yang diberikan, dan itu dapat dijalankan pada PC Windows apa pun dari baris perintah langsung dari prompt CMD yang ditinggikan, tanpa mengunduh permanen:

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

Anda akan mendapatkan prompt keamanan ketika Anda menjalankan ini, dan prompt EULA pertama kali pada mesin. File teks akan disimpan ke desktop saat ini.

EULA dapat diterima secara otomatis seperti ini:

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

Ada aplikasi portabel bernama Showmysoft. Ini akan menunjukkan perangkat lunak yang diinstal pada mesin lokal dan mesin jarak jauh dan dapat mengekspor ke PDF dan CSV . Instalasi tidak diperlukan. Unduh dari http://spidersoft.in/showmysoft/ .

Persyaratan sistem minimum adalah Microsoft .NET Framework 2.0.

jacob justin
sumber
0

Versi disandikan dalam program yang diinstal C # melalui registri 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();
        }
    }
}
Domenico Zinzi
sumber