Answers:
如果您使用Windows Vista或Windows 7,并且不想安装其他软件,则可以:
wmic
(Enter)product get name
(Enter)wmic
?)
如果在运行软件时使用-s标志,则Microsoft / Sysinternals的PsInfo可以列出所有已安装的软件。您还可以使用-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的卸载工具,您可以将已安装软件的列表导出到文本文件:
要添加到MicTech的解决方案中,请使用wmic
已安装软件的列表并将其捕获到文件中:
打开命令行窗口(Windows+ R,CMD.EXE)
wmic /OUTPUT:my_software.txt product get name
Sysinternals psinfo.exe提供了所有建议中的最完整信息,它可以直接从提升的CMD提示符从命令行在任何Windows PC上运行,而无需永久下载:
\\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。
通过Windows注册表在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)
{
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();
}
}
}