รับรายการแอพพลิเคชั่นที่ติดตั้งจากบรรทัดคำสั่งของ Windows


34

ฉันเคยเห็นชายคนหนึ่งเรียกใช้คำสั่งและได้รับรายการแอปพลิเคชันที่ติดตั้งทั้งหมดบนคอมพิวเตอร์ของเขา ฉันจะทำสิ่งนี้ได้อย่างไร

ฉันต้องการรายการแอปพลิเคชันที่ติดตั้งอยู่ในปัจจุบัน ผมเชื่อว่าเขาใช้WSHอย่างใด


คำตอบ:


39

หากคุณใช้Windows Vistaหรือ Windows 7 และคุณไม่ต้องการติดตั้งซอฟต์แวร์เพิ่มเติมคุณสามารถ:

  1. เปิดหน้าต่างบรรทัดคำสั่ง ( Windows+ R, CMD.EXE)
  2. ประเภทwmic( Enter)
  3. ประเภทproduct get name( Enter)

+1 ไม่มีอะไรเกี่ยวกับเครื่องของคุณที่ WMI ไม่สามารถบอกคุณได้ในวันนี้
GAThrawn

5
นี่มันบอกว่า Win32_Product จะไม่ให้ข้อมูลทั้งหมดเกี่ยวกับโปรแกรมที่ติดตั้ง หมายความว่าจะไม่แสดงรายการซอฟต์แวร์ทั้งหมด เหตุผลนี้คือ win32_product สอบถามฐานข้อมูล MSI เพื่อรับรายการ แต่จะมีซอฟแวร์มากมายที่ไม่มีรายการอยู่ในนั้นเนื่องจากติดตั้งจาก exe ในกรณีนี้การสอบถามคีย์รีจิสทรีถอนการติดตั้งให้ข้อมูลเกี่ยวกับโปรแกรมเหล่านี้
ตัวแปรแปรปรวน

1
@MiserableVariable มันพูดแบบนั้นเหรอ? (เป็นลิงค์ที่ไม่ถูกต้องหรือไม่) วิธีหนึ่งจะค้นหารีจิสทรีถอนการติดตั้งในลักษณะที่คล้ายกันอย่างไร (หรืออาจจะใช้wmicมันเอง?)
JeromeJ

1
ใช้ได้กับ Windows 10
Turcia

5
มันเป็นแค่ฉันหรือมันจะช้ามาก?
user3083324

27

PsInfoจาก Microsoft / Sysinternals สามารถแสดงรายการซอฟต์แวร์ที่ติดตั้งทั้งหมดหากคุณใช้แฟล็ก -sเมื่อคุณเรียกใช้ คุณยังสามารถใช้-cเพื่อส่งออกเป็นไฟล์ csv เพื่อใช้ใน Excel เช่น

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

1
ยังทำงาน Unter Win XP ในทางตรงกันข้ามกับวิธีการแก้ปัญหาของ WMI
Gerd Klima

Windows 2012 R2 x64ไม่แสดงการติดตั้งซอฟต์แวร์ทั้งหมดใน ฉันกำลังใช้PsInfo ver. 1.77
Tomasito

วิธีนี้ผลิต 933 รายการในแล็ปท็อปของฉันและวิธี WMI ผลิตเพียง 598 ดูเหมือนว่าจะสร้างรายการที่ใหญ่กว่า ...
Andrej Adamenko

@djhowell: ฉันพยายามเรียกใช้คำสั่งใน Windows 7 แต่ฉันได้รับข้อผิดพลาด " psinfo is not recognized as an internal or external command, operable program or batch file." และสิ่งนี้จะเกิดขึ้นแม้ในหน้าต่าง cmd สิทธิ์สูง
skm

14

สคริปต์ PowerShell เพื่อแสดงรายการ:

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

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

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

ไม่ใช่บรรทัดคำสั่ง แต่สำหรับวัตถุประสงค์นี้ฉันใช้เครื่องมือถอนการติดตั้งCCleanerเป็นการส่วนตัวและคุณสามารถส่งออกรายการซอฟต์แวร์ที่ติดตั้งไปยังไฟล์ข้อความ:

ข้อความแทน


2
ค่อนข้างแดกดันว่าเครื่องมือ Windows Powershell ฯลฯ ใช้เวลานานในการทำงาน (> 5 นาที) แต่ CCleaner เป็นทันที
คนเจ้าเล่ห์ CAD

6

ไม่ใช่บรรทัดคำสั่งอย่างแน่นอน แต่SIWเก่าที่ไว้ใจจะทำงานได้เช่นกัน ไฮไลต์แอปพลิเคชันคลิกขวา→ ส่งออกไปยังCSV, HTML, TXT หรือ XML :

ข้อความแทน

SIW เป็นฟรีแวร์และพกพาและไม่จำเป็นต้องติดตั้ง


ฉันรู้อยู่เสมอว่า SIW ต้องการใบอนุญาตคุณจะได้รับมันเป็นฟรีแวร์ที่ไหน?
El Turner

3

โซลูชัน CCleaner ด้านบนดูเหมือนจะเป็นวิธีที่เหมาะสมในการดำเนินการแก้ไขเว้นแต่คุณจะตัดสินใจใช้บรรทัดคำสั่ง ฉันเคยใช้ CCleaner มาก่อนมันเป็นเครื่องมือที่ดี แต่อย่าทึกทักว่าทุกอย่างมีการลงทะเบียนในแอปเพล็ต Add / Remove Programs (รายการเดียวกัน) มีแอพมากมายที่ใช้การติดตั้งสไตล์ xcopy เช่นเพียงเปิดเครื่องรูดไฟล์เก็บถาวรนี้และเรียกใช้ สิ่งเหล่านั้นจะไม่ปรากฏในรายการ


3

วิธีเพิ่มโซลูชันของ MicTech - ใช้wmicและบันทึกรายการซอฟต์แวร์ที่ติดตั้งลงในไฟล์:

เปิดหน้าต่างบรรทัดคำสั่ง ( Windows+ R, CMD.EXE)

wmic /OUTPUT:my_software.txt product get name

2

Sysinternals psinfo.exe ให้ข้อมูลที่สมบูรณ์ที่สุดของคำแนะนำทั้งหมดที่ให้ไว้และสามารถเรียกใช้บนพีซี Windows ใด ๆ จากบรรทัดคำสั่งโดยตรงจากพรอมต์ CMD ที่ยกระดับโดยไม่ต้องดาวน์โหลดอย่างถาวร:

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

คุณจะได้รับพรอมต์ความปลอดภัยเมื่อเปิดใช้งานและ EULA จะแจ้งให้ในเครื่องเป็นครั้งแรก ไฟล์ข้อความจะถูกบันทึกไว้ในเดสก์ท็อปปัจจุบัน

EULA สามารถยอมรับได้โดยอัตโนมัติดังนี้:

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

0

มีแอปพลิเคชั่นพกพาที่เรียกว่า Showmysoft มันจะแสดงการติดตั้งซอฟต์แวร์บนเครื่องท้องถิ่นและเครื่องจากระยะไกลและสามารถส่งออกไปในรูปแบบ PDFและCSV ไม่จำเป็นต้องทำการติดตั้ง ดาวน์โหลดจากhttp://spidersoft.in/showmysoft/

ความต้องการขั้นต่ำของระบบคือ Microsoft .NET Framework 2.0


0

รุ่นที่เข้ารหัสในโปรแกรมที่ติดตั้ง C # ผ่านการลงทะเบียน 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();
        }
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.