Получить список установленных приложений из командной строки Windows

34

Однажды я увидел, как парень выполнил команду и получил список всех установленных приложений на своем компьютере. Как мне это сделать?

Я хотел бы список моих установленных приложений. Я считаю, что он использовал WSH как-то.

Питер Мортенсен
источник
Связанный: есть ли утилита, которая выдаст мне список всех установленных программ, выгруженных в текстовый файл для Windows?   (не ограничивается решениями командной строки).
G-Man говорит: «Восстановите Монику»

Ответы:

39

Если вы используете Windows Vista или Windows 7 и не хотите устанавливать дополнительное программное обеспечение, вы можете:

  1. Откройте окно командной строки ( Windows+ R, CMD.EXE)
  2. Тип wmic( Enter)
  3. Тип product get name( Enter)
MicTech
источник
+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
djhowell
источник
1
также работает под Win XP в отличие от решения WMI
Герд Клима
Не показывает все установленное программное обеспечение Windows 2012 R2 x64. Я используюPsInfo ver. 1.77
Томасито
Этот метод произвел 933 элемента на моем ноутбуке, а метод WMI - только 598. Казалось, что список
Андрей Адаменко,
@djhowell: я пытаюсь выполнить команду в Windows 7, но получаю сообщение об ошибке " psinfo is not recognized as an internal or external command, operable program or batch file.". И это происходит даже в окне cmd с повышенными правами.
18:00
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 работает мгновенно.
САПР bloke
6

Не совсем командная строка, но верный старый SIW также сделает эту работу. Выделите Приложения , щелкните правой кнопкой мыши → Экспорт вCSV, HTML, TXT или XML :

Альтернативный текст

SIW является бесплатной и переносной, и установка не требуется.

Питер Мортенсен
источник
Я всегда знал, что SIW требует лицензии, где вы получаете ее как бесплатное программное обеспечение?
Эль Тернер
3

Представленное выше решение CCleaner кажется неплохим способом, если только вы не решили использовать командную строку. Я использовал CCleaner раньше, это хороший инструмент, но не думайте, что все зарегистрировано в апплете «Установка и удаление программ» (тот же список). Существует множество приложений, использующих установку в стиле xcopy, т.е. просто разархивируйте этот архив и запустите. Те не будут отображаться в списке.

JMD
источник
3

Чтобы добавить решение MicTech - используйте wmicи сохраните список установленного программного обеспечения в файл:

Откройте окно командной строки ( Windows+ R, CMD.EXE)

wmic /OUTPUT:my_software.txt product get name
Moots
источник
2

Sysinternals psinfo.exe предоставляет наиболее полную информацию из всех приведенных предложений, и его можно запустить на любом ПК с Windows из командной строки напрямую из командной строки с повышенными привилегиями CMD без постоянной загрузки:

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

Когда вы запустите это, вы получите запрос безопасности, а также первый раз 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();
        }
    }
}
Доменико Зинзи
источник