Список усіх встановлених програм на ПК


30

Чи є щось вбудоване в Windows, що дозволило б мені перерахувати все встановлене програмне забезпечення на комп'ютері таким чином, який можна скопіювати / вставити в електронну таблицю? Я знаю, що є програмне забезпечення, яке може це зробити, але я нічого не можу встановити. Я вважаю за краще не використовувати пакетний файл, якщо це можливо, але думаю, що це буде єдиний спосіб. В ідеалі я мав би змогу виводити ту саму інформацію, що показана на (нерозширеному) представленні форми "Додати / видалити програми".


Ви, можливо, можете написати пакетний файл для запиту бази даних Windows Installer, але це може не все.

Я написав додаток, який запитує реєстр для цієї інформації, і хоча додаток не додає його до потрібного формату, частина коду можна скопіювати та легко змінити для цього, ось посилання на джерело: pulsarsoftware.org/Projects/ProcessManager.html
MaQleod

1
У Windows PowerShell, ви можете спробувати: Get-WmiObject -Class Win32_Product. Дивіться тут для більш детальної інформації.
rishimaharaj

Відповіді:


40

Запустіть консоль і введіть:

wmic product get name,version

Мине певний час, але ви отримаєте повний список встановлених програм. WMIC - консольна версія Windows Management Instrumentation, доступна з Windows 2000 і далі. Дотримуючись інструкцій тут і тут , ви можете сказати WMIC виводити у форматі XML, що може бути трохи зручніше для вас. Однак лише зателефонувавши, wmic product get nameви отримаєте список назв додатків, які ви зможете легко скопіювати вставити в текстовий редактор і перетворити у формат електронних таблиць.

Або введіть:

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

Це виведе файл TXT зі списком програм. Потім ви можете вставити його в електронну таблицю, якщо хочете.

Джерело: http://helpdeskgeek.com/how-to/generate-a-list-of-installed-programs-in-windows/


Також ви можете використовувати файл csv.xsl для форматування результатів у списку результатів CSV:

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

або файл htable.xsl, щоб створити таблицю HTML результатів:

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

2
Якщо додати> InstallList.txt до кінця, ви отримаєте текстовий файл, що містить вихід. У поточному каталозі, де ви перебуваєте, знаходиться файл, де буде створений файл. Також ви можете додати, InstallDate після версії. Це покаже дату встановлення продукту. Це зручно для впорядкування будь-яких виробничих встановлених програм. Ви повинні мати можливість відкрити цей текстовий файл в Excel і трохи відсортувати речі.
Джон Дайер

8
На жаль, схоже, він не генерує той самий список, що показаний у програмах та функціях: є кілька додатків, які не відображаються в першому, і кілька таких, які є, але не існують в останніх. Деякі елементи, які не відображаються в wmicсписку: мої встановлені ігри Steam, Блокнот ++, Winmerge, Менеджер музичних файлів Google . Елементи, які не відображаються в програмах та функціях: Автоматичне оновлення Java, оновлення безпеки для CAPICOM (KB931906) . Я спробував запустити його від адміністратора CMD, але згенерований список був таким самим.
Чуїм

1
Це питання на StackOverflow цікаве пояснює , чому: stackoverflow.com/questions/673233 / ...
Chuim

Я використовував подібну команду, але це не дало кількох імен с / ш. Приклад. Пропрос, клінк тощо. Як включити те та інше?
Сатья Пракаш


8

Запустіть, wmic product getщоб отримати список встановленого програмного забезпечення, він повинен бути точно таким же списком, як програми додавання / видалення.

Ви можете нібито змусити його виводити у певному форматі, але я цього не пробував.

(Використовуйте wmic product get /?для перегляду параметрів, включаючи вихідне форматування, я намагався включити його сюди, але форматування було не зовсім правильним.)


Ха - я все-таки звернувся до вас, тому що ви знайшли та включили посилання, щоб зробити його виведеним у XML. Хороша робота. :)
Марк Аллен

Вихід, який я отримую, не є саме тим , що перелічує програми "Видалення та видалення програм". Будь-які ідеї чому?
Джоель Б

Здається, включають усі складові частини.
Марк Аллен

Чи є спосіб встановити програмне забезпечення будь-яких користувачів. Можливо, проблема, пов’язана з користувачем, спричиняє не все програмне забезпечення, що потрапляє до списку. Хоча я використовую лише цю машину.
Сатья Пракаш

5

Як уже згадували інші, ви можете отримати цю інформацію за допомогою WMI-запиту для об’єктів Win32_Product. PowerShell навіть скидає його у файл CSV, якщо хочете.

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

Однак слід шукати проблеми Win32_Product . Це не всі гумки і льодяники.


Мені завжди подобається альтернативний підхід до речей, особливо коли це стосується Пауершелла.
Албан

Ось ще одна команда PowerShell зробити трюк: Get-ItemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall * | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Формат-таблиця –AutoSize Ви можете додати "> файл виводу", щоб зберегти вихід. Дивіться більше тут: howtogeek.com/165293/… або тут: theitbros.com/…
yosh m

Зауважте, що для всіх, хто намагається команду @ yoshm, вам потрібна інша \ між Uninstall та *. Команда повинна бути:Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table
stephenwade

4

WMIC не працюватиме на сервері, якщо явно не встановлено Management and Monitoring Toolsв Add/Remove Windows Componentsменю .

Іншим рішенням є зайти до Реєстру та переглянути всі програми , які можна видалити , перейшовши до:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Вам доведеться клацнути кожен окремо, щоб побачити значення, тож замість цього можна клацнути правою кнопкою миші Uninstallпапку та вибрати Експорт . Переконайтеся, що для діапазону експорту встановлено лише вибрану гілку :

Вибрана філія

Потім ви можете відкрити .regфайл у блокноті ++, але ви отримаєте багато додаткової інформації про кожну програму:

.reg

Ви можете позбутися всіх рядків, які не починаються з "DisplayName" , зіставивши наступний регулярний вираз :

^(?!"DisplayName").+

Тоді ви можете видалити або рядок, "DisplayName" або "зіставивши наступний регулярний вираз :

("DisplayName"="|")

Тоді ви можете видалити будь-які дублікати рядків , зіставивши наступний регекс :

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

Або ви можете просто сортувати рядки в алфавітному порядку, а потім видалити порожні


3

Найпростіший спосіб, який я знайшов, - це засіб для чищення piriform.
У цьому меню є кнопка Інструменти -> Видалити -> "Зберегти в текстовий файл"


1
ОП попросив вбудоване рішення, оскільки він нічого не може встановити (добре, є CCleaner портативний, але в цьому справа не в цьому). І вихід повинен підтримувати копіювати та вставляти
nixda

1
Я розумію обмеження, накладене ОП, але цей метод насправді генерував такий самий повний перелік, як показано у програмах та функціях (як кажуть мої коментарі до основної відповіді, wmicцього не досяг).
Чуїм

0

У Windows 7 можна використовувати сценарій PowerShell:

Відкрийте PowerShell, натиснувши Startкнопку та ввівши powershellв поле пошуку.

Потім введіть таку команду у вікно PowerShell:

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

Ви можете видалити будь-яке з полів: DisplayName, DisplayVersion тощо, якщо вони вам не потрібні.

Якщо ви хочете зберегти вихід у файл, використовуйте перенаправлення:

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

0

Два інших не командних рядків рішення, які раніше не згадувались:

  1. MyUninstaller - безкоштовна програма від NirSoft, яка, крім видалення, також може експортувати в HTML вичерпний перелік всього встановленого програмного забезпечення, що включає багато додаткової інформації. Він має перевагу в тому, що він портативний. Хоча він не "вбудований", ви можете запустити його з USB-накопичувача. Ви можете знайти його тут .

  2. Belarc Advisor - безкоштовна (для особистого використання) програма, яка проводить аналіз безпеки та всебічну інвентаризацію апаратного та програмного забезпечення вашого комп'ютера. Він доступний тут . На жаль, ви повинні встановити його, щоб він не повністю відповідав потребам ОП, але може задовольнити потреби інших, хто має те саме питання та має змогу встановити.


0

Зашифрована версія в c # встановлених програмах через реєстр

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();
        }


    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.