「インストール済みのアプリケーション」とは、基本的には [コントロール パネル] -> [プログラムの追加と削除] に表示されるすべてのアプリケーションを意味します。
私は Python でそれを行うことを好みますが、C または C++ も問題ありません。
「インストール済みのアプリケーション」とは、基本的には [コントロール パネル] -> [プログラムの追加と削除] に表示されるすべてのアプリケーションを意味します。
私は Python でそれを行うことを好みますが、C または C++ も問題ありません。
コントロール パネルの [プログラムの追加と削除] に表示されるインストール済みアプリケーションのリストを意味する場合は、次のレジストリ キーで見つけることができます。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
レジストリ ツリーの構造の詳細については、こちらを参照してください。
レジストリから値を読み取るには、Python でwinreg APIを使用する必要があります。
Win32_Product WMI (Windows Management Instrumentation) クラスを確認してください。Python での WMIの使用に関するチュートリアルを次に示します。
コントロール パネルは、公式の方法である Win32 COM API を使用します (Google グループ、Win32 を参照)
。レジストリに依存しないでください。
Microsoft Script Repository には、インストールされているすべてのソフトウェアを一覧表示するためのスクリプトがあります。
import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_Product")
for objItem in colItems:
print "Caption: ", objItem.Caption
print "Description: ", objItem.Description
print "Identifying Number: ", objItem.IdentifyingNumber
print "Install Date: ", objItem.InstallDate
print "Install Date 2: ", objItem.InstallDate2
print "Install Location: ", objItem.InstallLocation
print "Install State: ", objItem.InstallState
print "Name: ", objItem.Name
print "Package Cache: ", objItem.PackageCache
print "SKU Number: ", objItem.SKUNumber
print "Vendor: ", objItem.Vendor
print "Version: ", objItem.Version
私が見た中で最高のレジストリ ベースの実装は、http: //www.vbforums.com/showthread.php?t=598355 に投稿された Chris Wright (chris128) によって書かれたものです。複数のレジストリ キーを使用し、現在ここに投稿されている回答よりもはるかに複雑です。Add/Remove Programs アプリと同じ結果が得られるようで、ARP アプリと同様に、アップデートを含めるオプションも提供します。
VB.NET で実装されていますが、C# や IronPython などの他の .NET 言語に簡単に変換できるはずです。最初に IronPython に変換すると、必要に応じて通常の Python に移植するのがかなり簡単になると思いますが、私はそれを自分で C# に変換しただけで、コードを少しクリーンアップしました。
指摘すべき小さなバグが 1 つだけあります。GetUserInstallerKeyPrograms() は、ユーザー プログラムのバージョンを抽出しても、リストに追加しません。ただし、これは簡単に修正できます。
xpおよびwin7でWMIを使用してインストールされているソフトウェアのリストを取得するためのC#.netコード(win7ではwmiが唯一の方法です)
WqlObjectQuery wqlQuery =
new WqlObjectQuery("SELECT * FROM Win32_Product");
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(wqlQuery);
foreach (ManagementObject software in searcher.Get()) {
Console.WriteLine(software["Caption"]);
}