「インストールされたアプリケーション」とは、基本的に[コントロールパネル] - [プログラムの追加と削除]で表示されるアプリケーションを意味します。Windows XPにインストールされているすべてのアプリケーションを列挙/一覧表示するにはどうすればよいですか?
私はPythonでやりたいと思っていますが、CやC++でも問題ありません。
「インストールされたアプリケーション」とは、基本的に[コントロールパネル] - [プログラムの追加と削除]で表示されるアプリケーションを意味します。Windows XPにインストールされているすべてのアプリケーションを列挙/一覧表示するにはどうすればよいですか?
私はPythonでやりたいと思っていますが、CやC++でも問題ありません。
あなたが追加で表示され、インストールされたアプリケーションのリストを意味する場合は、\レジストリキーでそれを見つけることができ、コントロールパネルの[プログラムの削除:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
more info about how the registry tree is structured can be found here。
pythonでwinreg APIを使用してレジストリから値を読み取る必要があります。
Win32_Product WMI(Windows Management Instrumentation)クラスを参照してください。 Here's a tutorialはPythonでWMIを使用しています。
Microsoft Script Repositoryは、script for listing all installed softwareです。 XPとwin7のでWMIを使用してインストールされているソフトウェアのリストを取得するための
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
C#.NETコードは
WqlObjectQuery wqlQuery =
new WqlObjectQuery("SELECT * FROM Win32_Product");
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(wqlQuery);
foreach (ManagementObject software in searcher.Get()) {
Console.WriteLine(software["Caption"]);
}
私が見た中で最高のレジストリベースの実装(WMIはwin7のでは唯一の方法です) Chris Wright(chris128)が書いたもので、投稿者はhttp://www.vbforums.com/showthread.php?t=598355です。複数のレジストリキーを使用しており、現在ここに投稿されている回答よりもはるかに複雑です。それは、アプリケーションの追加と削除のアプリケーションに同じ結果をもたらすようであり、ARPアプリケーションのように、更新を含めるオプションも提供します。
VB.NETで実装されていますが、C#やIronPythonなどの他の.NET言語に簡単に変換できます。私はIronPythonへの変換が最初に普通のPythonに移植するのはかなり簡単だと思っています。しかし、それをC#に変換してコードを少しだけ整理しました。
GetUserInstallerKeyPrograms()は、ユーザープログラムのバージョンを抽出しても、そのリストにユーザープログラムのバージョンを追加しません。これは簡単に修正できます。
ありがとう、これは最も有用です。 –
「インストール済みアプリケーション」はどのように定義しますか? –
清算が追加されました。 – sharkin