2011-11-12 16 views
1

インストールされているアプリケーションのリストを作成しようとしていますが、コントロールパネルの[アプリケーションの追加と削除]のリストに似ています。
私はWin32_Product WMI ClassMsiEnumProductsを使ってみました。 両方とも非常に似た出力を出力しましたが、両方のプログラムがプログラムの追加と削除にありませんでした。たとえば、私はAdobe Flash Playerがインストールされていることを知っていますが、これらのリストにはありませんでした。インストールされているアプリケーションのリストを取得

私は、リストを取得するためにいくつかのAPIを使用する方が良いことを読んだので、レジストリを読んでいないようにしようとしてきましたが、これまでに見つかった方法はありませんでした。

他に組み込みのAPI/COMメソッドがありますか?あるいは、私はレジストリからすべてを読み取ろうとするべきですか?

ALSO ...
[プログラムの追加と削除]の一覧にないプログラムがレジストリにあります。たとえば、Microsoft Security Essentialsがインストールされています。レジストリには、の部分は除外されていますが、[プログラムの追加と削除]の一覧には表示されていないと仮定して、アンインストールする項目があります。 (何らかの種類のAPIを使用したい理由の一部)

+0

http://msdn.microsoft.com/en-us/library/windows/desktop/aa372105(v=vs.85).aspxを見ましたか? – IronMensan

答えて

0

SystemComponentの値は、[プログラムの追加と削除]リストからそれを隠しています。
他に使用するAPIが見つからないため、レジストリを列挙します。

2

「プログラムと機能」リストと同じ項目を表示する場合は、フォルダにバインドしてその内容を尋ねることができます。

var shell = new ActiveXObject("Shell.Application"); 
var programsFolder = shell.Namespace("::{26EE0668-A00A-44D7-9371-BEB064C98683}\\0\\::{7b81be6a-ce2b-4676-a29e-eb907a5126c5}"); 
var items = programsFolder.Items(); 
for (var i = 0; i < items.Count; i++) { 
var item = items.Item(i); 
WScript.StdOut.WriteLine(item); 
} 

このC++バージョンにはさらに多くのタイプが含まれていますが、そのアイデアは同じです。

関連する問題