Windowsコマンドラインからインストール済みアプリケーションのリストを取得する


34

ある男がコマンドを実行し、コンピューターにインストールされているすべてのアプリケーションのリストを取得したことがあります。どうすればいいですか?

現在インストールされているアプリケーションのリストが欲しいのですが。彼は何とかWSHを使用したと思います。


回答:


39

Windows VistaまたはWindows 7 を使用していて、追加のソフトウェアをインストールしたくない場合、次のことができます。

  1. コマンドラインウィンドウを開きます(Windows+ R、CMD.EXE)
  2. タイプ wmicEnter
  3. タイプproduct get nameEnter

+1最近、WMIがあなたに伝えることができないマシンについてはあまりありません。
GAThrawn 09年

5
ここでは、Win32_Productはインストールされたソフトウェアに関するすべての情報を提供しないと述べています。つまり、すべてのソフトウェアがリストされるわけではありません。その理由は、win32_productがMSIデータベースを照会してリストを取得するためです。ただし、exeからインストールされたため、エントリが含まれないソフトウェアが多数あります。この場合、アンインストールレジストリキーを照会すると、これらのソフトウェアに関する情報が得られます。
悲惨な変数

1
@MiserableVariableそれはそれを言いますか?(それは間違ったリンクですか?)同様に、アンインストールレジストリをどのように照会しますか?(またはおそらくwmicそれ自体を使用して?)
JeromeJ

1
Windows 10でも動作します
Turcia

5
それは私だけですか、これは非常に遅いですか?
user3083324

27

Microsoft / SysinternalsのPsInfoは、実行時に-sフラグを使用すると、インストールされているすべてのソフトウェアを一覧表示できます。-cを使用してcsvファイルとして出力し、たとえばExcelで使用することもできます。

C:\> psinfo -s > software.txt
C:\> psinfo -s -c > software.csv

1
また、WMIソリューションとは対照的にウンター・ウィンXP作品
ゲルトクリマ

にインストールされているすべてのソフトウェアを表示しませんWindows 2012 R2 x64。私は使用していますPsInfo ver. 1.77
-Tomasito

大きなリストを生成するように見えたこの方法は、私のラップトップ上で933品目を生産し、WMIのメソッドは、598を生産し...
アンドレイAdamenko

@djhowell:Windows 7でコマンドを実行しようとしていますが、エラー " psinfo is not recognized as an internal or external command, operable program or batch file."が発生します。そして、これは、権限の昇格コマンドウィンドウでも発生します。
skm

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は即座に実行されます。
CADブローク

6

正確にはコマンドラインでもありませんが、信頼できる古いSIWでも同様に機能します。アプリケーションを強調表示し、右クリック→ エクスポートCSV、HTML、TXTまたはXMLを選択します

代替テキスト

SIWはフリーウェアでポータブルであり、インストールは不要です。


ライセンスを必要とするSIWを常に知っていますが、どこでフリーウェアとして入手できますか?
エルターナー

3

上記のCCleanerソリューションは、コマンドラインを使用することに決めていない限り、適切な方法のようです。以前はCCleanerを使用したことがありますが、これは優れたツールですが、すべてが[プログラムの追加と削除]アプレット(同じリスト)に登録されていると想定しないでください。xcopyスタイルのインストールを使用するアプリがたくさんあります。つまり、このアーカイブを解凍して実行するだけです。それらはリストに表示されません。


3

MicTechのソリューションに追加するには-を使用wmicインストールされたソフトウェアのリストを使用してファイルにキャプチャします。

コマンドラインウィンドウを開きます(Windows+ R、CMD.EXE)

wmic /OUTPUT:my_software.txt product get name

2

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


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();
        }
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.