Windows komut satırından yüklü uygulamaların listesini alın


34

Bir keresinde bir adamın komut çalıştırdığını ve bilgisayarında kurulu tüm uygulamaların listesini aldığını gördüm. Bunu nasıl yaparım?

Şu anda yüklü uygulamalarımın bir listesini istiyorum. Bir şekilde WSH kullandığını düşünüyorum .


Yanıtlar:


39

Eğer kullanırsanız , Windows Vista veya Windows 7 ve ek yazılım yüklemek istemedim, şunları yapabilirsiniz:

  1. Bir komut satırı penceresi açın ( Windows+ R, CMD.EXE)
  2. Türü wmic( Enter)
  3. Türü product get name( Enter)

+1 Makineniz hakkında WMI'nin size bugün söyleyemeyeceği bir şey yok.
GAThrawn

5
burada Win32_Product'ın yüklü yazılımlar hakkında tüm bilgileri vermeyeceğini söylüyor. Bu, tüm yazılımları listelemeyeceği anlamına gelir. Bunun nedeni win32_product, listeyi almak için MSI veritabanını sorgular. Ancak, Exe'in kurulumundan içeri girmeyecek birçok yazılım olacak. Bu durumda, kaldırma kayıt defteri anahtarının sorgulanması bu yazılımlar hakkında bilgi verir.
Sefil Değişken Değişken

1
@MiserableVariable Bunu söylüyor mu? (Bu yanlış bağlantı mı?) Biri kaldırma sicilini benzer bir şekilde nasıl sorgular? (ya da belki wmickendini kullanarak ?)
JeromeJ

1
Ayrıca, Windows 10 ile çalışır
Turcia

5
Sadece ben miyim yoksa bu çok mu yavaş çalışıyor?
user3083324

27

Microsoft / Sysinternals'dan PsInfo , çalıştırdığınızda -s bayrağını kullanırsanız, kurulu tüm yazılımı listeleyebilir . Örneğin Excel'de kullanmak üzere csv dosyası olarak çıktı almak için -c'yi de kullanabilirsiniz .

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

1
WMI çözümünün aksine Win XP’de de çalışıyor
Gerd Klima

Tüm yüklü yazılımları açık göstermez Windows 2012 R2 x64. Ben kullanıyorumPsInfo ver. 1.77
Tomasito

Daha geniş bir liste üretmek gibiydi Bu yöntem benim laptop 933 ürün üretti ve WMI yöntemi yalnızca 598. üretti ...
Andrej Adamenko

@djhowell: Komutu Windows 7'de çalıştırmaya çalışıyorum ancak bir hata alıyorum " psinfo is not recognized as an internal or external command, operable program or batch file.". Ve bu, yüksek haklar cmd penceresinde bile olur.
skm

14

Bunları listelemek için bir PowerShell betiği:

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

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

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

Tam olarak komut satırı değil, ancak bu amaçla kişisel olarak CCleaner'in kaldırma aracını kullanıyorum ve yüklü yazılım listesini bir metin dosyasına verebilirsiniz:

Alt metin


2
Aksine, Windows Powershell etc araçlarının çalışması uzun sürebilir (> 5 dakika) ancak CCleaner anında.
CAD,

6

Tam olarak komut satırı da değil, ancak güvenilir eski SIW de işi yapacak. Uygulamalar'ı vurgulayın , sağ tıklatın → Dışarı AktarCSV, HTML, TXT veya XML :

Alt metin

SIW ücretsiz ve taşınabilirdir ve kurulum gerekmez.


Ben bir lisans gerektirecek SIW her zaman biliyorum, nereden SORULAR VE CEVAPLAR alıyorsunuz?
El Turner

3

Yukarıdaki CCleaner çözümü, komut satırını kullanmaya kararlı olmadığınız sürece, bunun için iyi bir yol gibi görünüyor. CCleaner'ı daha önce kullandım, bu iyi bir araç ancak Program Ekle / Kaldır uygulamasında (aynı liste) her şeyin kayıtlı olduğunu varsaymayın. Xcopy tarzı yükleme kullanan birçok uygulama var, yani bu arşivi açıp çalıştırın. Bunlar listede görünmeyecek.


3

MicTech'in çözümüne eklemek için - wmicyüklü yazılım listesini kullanın ve bir dosyaya kaydedin :

Bir komut satırı penceresi açın ( Windows+ R, CMD.EXE)

wmic /OUTPUT:my_software.txt product get name

2

Sysinternals psinfo.exe, verilen tüm öneriler hakkında en eksiksiz bilgileri sağlar ve herhangi bir Windows PC'de komut satırından doğrudan yükseltilmiş bir CMD isteminden doğrudan çalıştırılabilir:

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

Bunu çalıştırdığınızda bir güvenlik uyarısı alırsınız ve bir makinede ilk defa bir EULA uyarısı alırsınız. Mevcut masaüstüne bir metin dosyası kaydedilecektir.

EULA bu şekilde otomatik olarak kabul edilebilir:

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


0

C # yüklü programlarda Windows kayıt defteri aracılığıyla kodlanmış sürümü:

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();
        }
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.