Liệt kê tất cả các phần mềm đã cài đặt trên PC


30

Có bất cứ điều gì được tích hợp trong Windows sẽ cho phép tôi liệt kê tất cả các phần mềm đã cài đặt trên máy tính theo cách có thể sao chép / dán vào bảng tính không? Tôi biết có phần mềm có thể làm điều này, nhưng tôi không thể cài đặt bất cứ thứ gì. Tôi không muốn sử dụng một tệp bó nếu có thể, nhưng tôi tưởng tượng rằng đó sẽ là cách duy nhất. Lý tưởng nhất là tôi có thể xuất thông tin tương tự như được hiển thị trên giao diện (chưa mở rộng) của Biểu mẫu Thêm / Xóa Chương trình.


Bạn có thể có thể viết một tệp bó để truy vấn cơ sở dữ liệu Windows Installer, nhưng điều đó có thể không bắt được mọi thứ.

Tôi đã viết một ứng dụng truy vấn sổ đăng ký để biết thông tin này và trong khi ứng dụng không đặt nó ở định dạng bạn muốn, phần mã có thể được sao chép và dễ dàng sửa đổi để làm điều đó, đây là liên kết đến nguồn: pulsarsoftware.org/Projects/ProcessManager.html
MaQleod

1
Trong windows powershell, bạn có thể thử : Get-WmiObject -Class Win32_Product. Xem ở đây để biết thêm chi tiết.
rishimaharaj

Câu trả lời:


40

Bật giao diện điều khiển của bạn và gõ:

wmic product get name,version

Mất một lúc, nhưng bạn sẽ có được danh sách đầy đủ các chương trình đã cài đặt. WMIC là phiên bản giao diện điều khiển của Thiết bị quản lý Windows, có sẵn từ Windows 2000 trở đi. Làm theo các hướng dẫn ở đâyở đây , bạn có thể yêu cầu WMIC xuất ra ở định dạng XML, điều đó có thể thuận tiện hơn cho bạn một chút. Tuy nhiên, chỉ cần gọi wmic product get namesẽ giúp bạn có một danh sách các tên ứng dụng, bạn có thể dễ dàng sao chép dán vào trình soạn thảo văn bản và chuyển đổi sang định dạng bảng tính.

Ngoài ra, nhập:

wmic /output:C:\InstallList.txt product get name,version

Điều này sẽ xuất ra một tệp TXT với danh sách các chương trình. Sau đó, bạn có thể dán nó vào một bảng tính, nếu bạn muốn.

Nguồn: http://helpdeskgeek.com/how-to/generate-a-list-of-installed-programs-in-windows/


Ngoài ra, bạn có thể sử dụng tệp csv.xsl để định dạng đầu ra thành danh sách kết quả CSV:

wmic /output:C:\InstallList.csv product get /format:csv.xsl

hoặc tệp htable.xsl để tạo bảng kết quả HTML:

wmic /output:C:\InstallList.htm product get /format:hform.xsl

2
Nếu bạn thêm> InstallList.txt vào cuối, bạn sẽ nhận được một tệp văn bản chứa đầu ra. Thư mục hiện tại nơi bạn đang ở là nơi tệp sẽ được tạo. Ngoài ra, bạn có thể thêm, InstallDate sau phiên bản. Điều này sẽ hiển thị ngày sản phẩm đã được cài đặt. Điều này là thuận tiện để sắp xếp bất kỳ chương trình cài đặt sản xuất. Bạn sẽ có thể mở tệp văn bản này trong Excel và sắp xếp mọi thứ một chút nếu cần.
John Dyer

8
Đáng buồn thay, nó dường như không tạo ra cùng một danh sách như được hiển thị trong Chương trình và Tính năng: có một số ứng dụng không xuất hiện trước đây và một số ứng dụng không tồn tại trong phần sau. Một số mục không hiển thị trong wmicdanh sách: các trò chơi Steam đã cài đặt của tôi, Notepad ++, Winmerge, Trình quản lý âm nhạc của Google . Các mục không hiển thị trong Chương trình và Tính năng: Trình cập nhật tự động Java, Cập nhật bảo mật cho CAPICOM (KB931906) . Tôi đã thử chạy nó từ Quản trị viên CMD nhưng danh sách được tạo là như nhau.
Chuim

1
Câu hỏi này tại StackOverflow kinda giải thích tại sao: stackoverflow.com/questions/673233/iêu
Chuim

Tôi đã sử dụng lệnh tương tự nhưng điều đó đã không đưa ra một vài tên s / w. Thí dụ. Propros, clink, vv Làm thế nào để bao gồm điều đó và tương tự?
Satya Prakash


8

Chạy wmic product getđể có được danh sách các phần mềm đã cài đặt, nó phải chính xác cùng một danh sách với các chương trình thêm / xóa.

Bạn có thể đưa nó ra đầu ra ở một định dạng cụ thể, nhưng tôi chưa thử.

(Sử dụng wmic product get /?để xem các tham số bao gồm định dạng đầu ra, tôi đã cố gắng đưa nó vào đây nhưng định dạng không hoàn toàn đúng.)


Ha - Tôi đã nâng cấp bạn bằng mọi cách vì bạn đã tìm thấy và bao gồm các liên kết để làm cho nó xuất ra cụ thể bằng XML. Làm tốt lắm. :)
Mark Allen

Đầu ra tôi nhận được không chính xác những gì Thêm / Xóa Chương trình liệt kê. Bất cứ ý tưởng tại sao?
Joel B

Nó dường như bao gồm tất cả các bộ phận thành phần.
Mark Allen

Có cách nào để cài đặt phần mềm bởi bất kỳ người dùng nào không. Có thể vấn đề liên quan đến người dùng đang gây ra không phải tất cả các phần mềm trong danh sách. Mặc dù tôi chỉ sử dụng máy này.
Satya Prakash

5

Như những người khác đã đề cập, bạn có thể nhận thông tin này bằng truy vấn WMI cho các đối tượng Win32_ Productt. PowerShell thậm chí sẽ chuyển nó thành tệp CSV cho bạn nếu bạn muốn.

Get-WmiObject -Class "Win32_Product" | Export-CSV (Join-Path $home "Win32_Product.csv")

Tuy nhiên, bạn nên tìm kiếm các vấn đề Win32_Sản phẩm . Nó không phải là tất cả kẹo cao su và kẹo.


Tôi luôn thích một cách tiếp cận khác với mọi thứ, đặc biệt là khi nó liên quan đến Powershell.
Alban

Đây là một lệnh PowerShell khác để thực hiện thủ thuật: Get-ItemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall * | Chọn-Object DisplayName, DisplayVersion, Publisher, InstallDate | Định dạng bảng BảngAutoSize Bạn có thể thêm "> outputfile" để lưu kết quả đầu ra. Xem thêm ở đây: howtogeek.com/165293/... hoặc ở đây: theitbros.com/...
m Yosh

Lưu ý cho bất kỳ ai khác đang thử lệnh của @ yoshm, bạn cần một \ giữa Gỡ cài đặt và *. Lệnh nên là:Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table
stephenwade

4

WMIC sẽ không hoạt động trên Máy chủ trừ khi bạn đã cài đặtManagement and Monitoring ToolsAdd/Remove Windows Components rõ ràng trong menu .

Một giải pháp khác là vào Registry và xem tất cả các Chương trình có thể gỡ cài đặt bằng cách vào:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Bạn sẽ phải nhấp từng cái một để xem giá trị, vì vậy thay vào đó, bạn có thể nhấp chuột phải vào Uninstallthư mục và chọn Xuất . Đảm bảo rằng Phạm vi xuất được đặt để chỉ bao gồm Chi nhánh được chọn :

Chi nhánh được chọn

Sau đó, bạn có thể mở .regtệp trong notepad ++, nhưng bạn sẽ nhận được nhiều thông tin bổ sung trên mỗi ứng dụng:

.reg

Bạn có thể thoát khỏi tất cả các dòng không bắt đầu bằng "DisplayName" cách khớp với biểu thức chính sau :

^(?!"DisplayName").+

Sau đó, bạn có thể xóa chuỗi "DisplayName" hoặc "bằng cách khớp trên biểu thức chính sau :

("DisplayName"="|")

Sau đó, bạn có thể xóa bất kỳ dòng trùng lặp nào bằng cách khớp trên biểu thức chính sau :

^(.*)(\r?\n\1)+$

Hoặc bạn chỉ có thể sắp xếp các dòng theo thứ tự abc và sau đó xóa các dòng trống


3

Cách dễ nhất tôi tìm thấy là chạy ccleaner của piriform.
Nút này có một nút tại Công cụ -> Gỡ cài đặt -> "lưu vào tệp văn bản"


1
OP hỏi cho một built-in giải pháp kể từ khi ông không thể cài đặt bất cứ điều gì (ok, có CCleaner di động, nhưng thats không phải là điểm). Và đầu ra phải hỗ trợ sao chép và dán
nixda

1
Tôi hiểu giới hạn được áp đặt bởi OP, nhưng thực tế phương pháp này đã tạo ra một danh sách đầy đủ như được hiển thị bởi Chương trình và Tính năng (như nhận xét của tôi về câu trả lời chính nói, wmicđã không đạt được điều đó).
Chuim

0

Trên Windows 7, bạn có thể sử dụng tập lệnh PowerShell:

Mở PowerShell bằng cách nhấp vào Startnút và nhập powershellvào trường tìm kiếm.

Sau đó nhập lệnh sau vào Cửa sổ PowerShell:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize

Bạn có thể xóa bất kỳ trường nào: DisplayName, DisplayVersion, v.v. nếu bạn không cần chúng.

Nếu bạn muốn lưu đầu ra vào một tệp, hãy sử dụng chuyển hướng:

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize > C:\temp\AllInstalledPrograms.txt

0

Hai giải pháp phi dòng lệnh khác chưa được đề cập trước đây là:

  1. MyUninstaller - một chương trình phần mềm miễn phí từ NirSoft, ngoài việc gỡ cài đặt, còn có thể xuất sang HTML một danh sách toàn diện tất cả các phần mềm đã cài đặt bao gồm nhiều thông tin bổ sung. Nó có lợi thế là di động. Mặc dù nó không được "tích hợp", nhưng bạn có thể chạy nó từ ổ USB. Bạn có thể tìm thấy nó ở đây .

  2. Belarc Advisor - một chương trình phần mềm miễn phí (dành cho sử dụng cá nhân) chuyên phân tích bảo mật và kiểm kê toàn diện phần cứng và phần mềm máy tính của bạn. Nó có sẵn ở đây . Thật không may, bạn phải cài đặt nó, vì vậy nó không đáp ứng đầy đủ nhu cầu của OP, nhưng có thể đáp ứng nhu cầu của những người khác có cùng câu hỏi và có thể cài đặt.


0

Phiên bản được mã hóa trong các chương trình được cài đặt c # qua registry

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 && subkey.GetValue("DisplayName").ToString().Contains("Visual Studio"))
                            {
                                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();
        }


    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.