Bir keresinde bir adamın komut çalıştırdığını ve bilgisayarında kurulu tüm uygulamaların listesini aldığını gördüm. Bunu nasıl yaparım?
Şu anda yüklü uygulamalarımın bir listesini istiyorum. Bir şekilde WSH kullandığını düşünüyorum .
Bir keresinde bir adamın komut çalıştırdığını ve bilgisayarında kurulu tüm uygulamaların listesini aldığını gördüm. Bunu nasıl yaparım?
Şu anda yüklü uygulamalarımın bir listesini istiyorum. Bir şekilde WSH kullandığını düşünüyorum .
Yanıtlar:
Eğer kullanırsanız , Windows Vista veya Windows 7 ve ek yazılım yüklemek istemedim, şunları yapabilirsiniz:
wmic
( Enter)product get name
( Enter)wmic
kendini kullanarak ?)
Microsoft / Sysinternals'dan PsInfo , çalıştırdığınızda -s bayrağını kullanırsanız, kurulu tüm yazılımı listeleyebilir . Örneğin Excel'de kullanmak üzere csv dosyası olarak çıktı almak için -c'yi de kullanabilirsiniz .
C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv
Windows 2012 R2 x64
. Ben kullanıyorumPsInfo ver. 1.77
psinfo is not recognized as an internal or external command, operable program or batch file.
". Ve bu, yüksek haklar cmd penceresinde bile olur.
Bunları listelemek için bir PowerShell betiği:
$loc = Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall
$names = $loc |foreach-object {Get-ItemProperty $_.PsPath}
foreach ($name in $names)
{
Write-Host $name.Displayname
}
Tam olarak komut satırı değil, ancak bu amaçla kişisel olarak CCleaner'in kaldırma aracını kullanıyorum ve yüklü yazılım listesini bir metin dosyasına verebilirsiniz:
Tam olarak komut satırı da değil, ancak güvenilir eski SIW de işi yapacak. Uygulamalar'ı vurgulayın , sağ tıklatın → Dışarı Aktar → CSV, HTML, TXT veya XML :
SIW ücretsiz ve taşınabilirdir ve kurulum gerekmez.
Yukarıdaki CCleaner çözümü, komut satırını kullanmaya kararlı olmadığınız sürece, bunun için iyi bir yol gibi görünüyor. CCleaner'ı daha önce kullandım, bu iyi bir araç ancak Program Ekle / Kaldır uygulamasında (aynı liste) her şeyin kayıtlı olduğunu varsaymayın. Xcopy tarzı yükleme kullanan birçok uygulama var, yani bu arşivi açıp çalıştırın. Bunlar listede görünmeyecek.
MicTech'in çözümüne eklemek için - wmic
yüklü yazılım listesini kullanın ve bir dosyaya kaydedin :
Bir komut satırı penceresi açın ( Windows+ R, CMD.EXE)
wmic /OUTPUT:my_software.txt product get name
Sysinternals psinfo.exe, verilen tüm öneriler hakkında en eksiksiz bilgileri sağlar ve herhangi bir Windows PC'de komut satırından doğrudan yükseltilmiş bir CMD isteminden doğrudan çalıştırılabilir:
\\live.sysinternals.com\tools\psinfo.exe -s > %userprofile%\Desktop\_psinfo.txt
Bunu çalıştırdığınızda bir güvenlik uyarısı alırsınız ve bir makinede ilk defa bir EULA uyarısı alırsınız. Mevcut masaüstüne bir metin dosyası kaydedilecektir.
EULA bu şekilde otomatik olarak kabul edilebilir:
\\live.sysinternals.com\tools\psinfo.exe -s /accepteula > %userprofile%\Desktop\_psinfo.txt
Showmysoft adında taşınabilir bir uygulama var. Yüklenen yazılımı yerel makinede ve uzak makinelerde gösterir ve PDF'ye ve CSV'ye dışa aktarabilir . Kurulum gerekli değildir. Http://spidersoft.in/showmysoft/ adresinden indirin .
Minimum sistem gereksinimi Microsoft .NET Framework 2.0'dır.
C # yüklü programlarda Windows kayıt defteri aracılığıyla kodlanmış sürümü:
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();
}
}
}