2009-11-10 19:05:44 +0000 2009-11-10 19:05:44 +0000
34
34
Advertisement

从Windows命令行获取已安装的应用程序列表

Advertisement

我曾经看到一个人运行一个命令,得到了他电脑上所有已安装的应用程序的列表。怎么做呢?

我想得到我目前安装的应用程序的列表。我相信他不知怎么就用了WSH

Advertisement
Advertisement

答案 (8)

40
40
40
2009-11-10 19:15:35 +0000

如果你使用的是 Windows Vista 或 Windows 7,而你又不想安装其他软件,你可以:

  1. 打开一个命令行窗口(Windows+R,CMD.EXE)
  2. 输入 wmic (回车)
  3. 输入 product get name (回车) 3.
27
27
27
2009-11-10 19:19:33 +0000

微软/Sysinternals的PsInfo,如果你在运行时使用-s标志,可以列出所有已安装的软件。你也可以使用-c*输出为csv文件,例如在Excel中使用。

14
Advertisement
14
14
2009-11-10 19:17:09 +0000
Advertisement

一个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的卸载工具,你可以将已安装的软件列表导出为文本文件:

3
3
3
2015-08-29 19:19:55 +0000

要添加到MicTech的解决方案 - 使用wmic并将安装的软件列表抓取到文件中:

打开一个命令行窗口(Windows+R,CMD.EXE)

wmic /OUTPUT:my_software.txt product get name
3
Advertisement
3
3
2009-11-10 19:43:46 +0000
Advertisement

上面的CCleaner解决方案似乎是个不错的方法,除非你决心使用命令行。我以前用过CCleaner,这是一个很好的工具,但不要以为所有的东西都在添加/删除程序小程序(同样的列表)中注册了。有很多应用都是使用xcopy式的安装方式,也就是说,只需解压这个压缩包就可以运行。这些都不会显示在列表中。

2
2
2
2015-05-29 15:38:14 +0000

Sysinternals psinfo.exe提供了所有建议中最完整的信息,它可以在任何Windows PC上从命令行直接从高架的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
0
Advertisement
0
0
2017-07-12 15:37:28 +0000
Advertisement

通过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();
        }
    }
}
0
0
0
2013-09-02 08:52:09 +0000

有一个名为Showmysoft的便携式应用程序。它将显示本地机器和远程机器上安装的软件,并可以导出为PDFCSV。不需要安装。从 http://spidersoft.in/showmysoft/ 中下载。

最低系统要求是Microsoft .NET Framework 2.0。

Advertisement

相关问题

3
19
10
28
2
Advertisement
Advertisement