Windows Server 2012R2 を実行している Windows Server 2012R2 のテスト環境があり、Windows 7 SP1 を使用して、このドメインでドメイン コントローラーとクライアントを実行しています。
クライアントからインストールされているソフトウェアのリストを取得するために、次のコードを使用します。
ManagementScope scope = new ManagementScope("\\\\10.0.0.101\\root\\cimv2");
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Product Where AssignmentType = 1");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection queryCollection = searcher.Get();
foreach (ManagementObject item in queryCollection)
{
Console.WriteLine("Name: " + item["Name"].ToString());
Console.WriteLine("PackageName: " + item["PackageName"].ToString());
Console.WriteLine("PackageCode: " + item["PackageCode"].ToString());
}
私の問題は、ドメインに参加する前にクライアントにインストールしたソフトウェアのリストしか取得できないことです。ドメインへの接続後にクライアントに何かがインストールされますが、クエリには表示されません。