Список всего установленного программного обеспечения на ПК

30

Есть ли что-то встроенное в Windows, что позволило бы мне перечислить все установленное программное обеспечение на компьютере таким образом, чтобы его можно было скопировать / вставить в электронную таблицу? Я знаю, что есть программное обеспечение, которое может сделать это, но я не могу ничего установить. Я бы предпочел не использовать командный файл, если это возможно, но я думаю, что это будет единственный путь. В идеале я мог бы вывести ту же информацию, что и в (не развернутом) виде формы «Установка и удаление программ».

Джоэл Б
источник
Возможно, вы могли бы написать командный файл для запроса базы данных установщика Windows, но это может не перехватить все.
Я написал приложение, которое запрашивает в реестре эту информацию, и, хотя приложение не помещает ее в нужный вам формат, часть кода можно скопировать и легко изменить, чтобы сделать это, вот ссылка на источник: pulsarsoftware.org/Projects/ProcessManager.html
MaQleod,
1
В Windows PowerShell, вы можете попробовать: Get-WmiObject -Class Win32_Product. Смотрите здесь для более подробной информации.
Ришимахарадж

Ответы:

40

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

wmic product get name,version

Это займет некоторое время, но вы получите полный список установленных программ. WMIC - это консольная версия инструментария управления Windows, доступная в 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, Notepad ++, Winmerge, Google Music Manager . Элементы, которые не отображаются в разделе « Программы и компоненты»: « Автообновление Java», «Обновление безопасности для CAPICOM» (KB931906) . Я попытался запустить его из CMD администратора, но сгенерированный список был таким же.
Чуим
1
Этот вопрос в StackOverflow как бы объясняет, почему: stackoverflow.com/questions/673233/…
Chuim
Я использовал подобную команду, но она не дала несколько названий. Пример. Пропрос, клинк и т. Д. Как включить то и подобное?
Сатья Пракаш
1
Если вы получаете, Invalid Class 0x80041010 Errorто вы можете пойти Add/Remove Windows Componentsи проверитьManagement and Monitoring Tools
KyleMit
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.
Албан
Вот еще одна команда PowerShell для решения этой задачи: Get-ItemProperty HKLM: \ Software \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall * | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize Вы можете добавить «> outputfile», чтобы сохранить вывод. Подробнее здесь: howtogeek.com/165293/... или здесь: theitbros.com/...
Зося м
Заметьте, что для тех, кто пробует команду @ 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файл в notepad ++, но вы получите много дополнительной информации о каждом приложении:

.reg

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

^(?!"DisplayName").+

Затем вы можете удалить либо строку, "DisplayName" либо "сопоставив следующее регулярное выражение :

("DisplayName"="|")

Затем вы можете удалить любые дубликаты строк , сопоставив их по следующему регулярному выражению :

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

Или вы можете просто отсортировать строки по алфавиту, а затем удалить пустые

KyleMit
источник
3

Самый простой способ, который я нашел, - запустить программу очистки Piriform.
Это кнопка в Сервис -> Удалить -> «Сохранить в текстовый файл»

user167328
источник
1
ОП попросил встроенное решение, поскольку он ничего не может установить (хорошо, есть переносимый CCleaner, но это не главное). И вывод должен поддерживать копирование и вставку
nixda
1
Я понимаю ограничение, наложенное OP, но этот метод на самом деле генерировал полный список, как показано в разделе «Программы и компоненты» (как говорится в моих комментариях к основному ответу, 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
Flot2011
источник
0

Два других решения не из командной строки, не упомянутых ранее:

  1. MyUninstaller - бесплатная программа от NirSoft, которая, помимо удаления, может также экспортировать в HTML полный список всего установленного программного обеспечения, который включает в себя много дополнительной информации. Преимущество в том, что он портативный. Пока он не «встроенный», вы можете запустить его с USB-накопителя. Вы можете найти это здесь .

  2. Belarc Advisor - бесплатная (для личного пользования) программа, которая выполняет анализ безопасности и проводит полную инвентаризацию аппаратного и программного обеспечения вашего компьютера. Это доступно здесь . К сожалению, вы должны установить его, чтобы он не полностью соответствовал потребностям OP, но может удовлетворить потребности других пользователей, имеющих такой же вопрос и способных установить.

йош м
источник
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();
        }


    }
}
Доменико Зинзи
источник