Я одного разу побачив хлопця, який виконує команду, і отримав список усіх встановлених програм на своєму комп’ютері. Як це зробити?
Я хотів би список моїх встановлених на сьогодні програм. Я вважаю, він якось використовував WSH .
Я одного разу побачив хлопця, який виконує команду, і отримав список усіх встановлених програм на своєму комп’ютері. Як це зробити?
Я хотів би список моїх встановлених на сьогодні програм. Я вважаю, він якось використовував WSH .
Відповіді:
Якщо ви використовуєте Windows Vista або Windows 7 і не хочете встановлювати додаткове програмне забезпечення, ви можете:
wmic
( Enter)product get name
( Enter)wmic
себе?)
PsInfo від Microsoft / Sysinternals може перелічити все встановлене програмне забезпечення, якщо ви використовуєте прапор -s під час його запуску. Ви також можете використовувати -c, щоб вивести його як файл CSV, який, наприклад, використовувати в Excel.
C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv
Windows 2012 R2 x64
. Я використовуюPsInfo ver. 1.77
psinfo is not recognized as an internal or external command, operable program or batch file.
". І це відбувається навіть у вікні cmd з підвищеними правами.
Сценарій 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 , і ви можете експортувати список встановленого програмного забезпечення в текстовий файл:
Не зовсім командний рядок, але справжній старий SIW також зробить цю роботу. Виділіть програми , клацніть правою кнопкою миші → Експорт у → CSV, HTML, TXT або XML :
SIW є безкоштовним та портативним, а установка не потрібна.
Наведене вище рішення CCleaner здається пристойним способом вирішити це, якщо ви не вирішили використовувати командний рядок. Раніше я використовував CCleaner, це гарний інструмент, але не вважайте, що все зареєстровано в аплеті Add / Remove Programs (той самий список). Існує безліч додатків, які використовують установку в стилі xcopy, тобто просто розпакуйте цей архів і запустіть. Вони не відображатимуться у списку.
Щоб додати до рішення MicTech - використовуйте wmic
та фіксуйте список встановленого програмного забезпечення до файлу:
Відкрийте вікно командного рядка ( Windows+ R, CMD.EXE)
wmic /OUTPUT:my_software.txt product get name
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
Існує портативний додаток під назвою Showmysoft. Він покаже встановлене програмне забезпечення на локальній машині та віддалених машинах та може експортувати в PDF та CSV . Установка не потрібна. Завантажте з http://spidersoft.in/showmysoft/ .
Мінімальна системна вимога - Microsoft .NET Framework 2.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();
}
}
}