1

ManagementObjectSearcher私の C# .NET 2.0 アプリケーションは、クラスを使用して 2 つのクエリを実行します。

_searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSWmi_PnPInstanceNames");

_searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSSerial_PortName");

_searcher両方のクエリのすべての結果が含まれるように、それらを結合したいと思います。しかし、これをしようとすると...

_searcher = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSWmi_PnPInstanceNames AND MSSerial_PortName");

...「無効なクエリ」例外がスローされます。どうすればこれを機能させることができるかについて、誰かアイデアがありますか? ありがとう。

4

2 に答える 2

3

join残念ながら、WMI クエリ言語はorunion操作をサポートしていないため、これらのクエリを個別に実行する必要があります (異なるオブジェクト ストアから選択するため)。

WMI クエリ言語 (WQL) は ANSI SQL のサブセットであり、セマンティックがいくつか変更されています。SQL でできることすべてが WQL でできるわけではありません。MSDN で、WMIがサポートするクエリ構造をオンラインで確認できます。

于 2010-10-04T20:21:48.037 に答える
0

以下に示すように、複数のテーブルでクエリを実行できます

 ManagementObjectSearcher searcher; 
 query = new ObjectQuery(string.Format("Select SMS_CollectToSubCollect.subCollectionID,SMS_Collection.Name " +
                                        " from SMS_CollectToSubCollect, SMS_Collection " +
                                        " where  subCollectionID in " +
                                        " (select CollectionID  from SMS_Collection where name='{0}') " +
                                        " and SMS_Collection.CollectionID  =  SMS_CollectToSubCollect.parentCollectionID " , name));
foreach (ManagementObject queryObj in searcher.Get())
{
//TODO:read values from results 
 }

お役に立てれば

于 2012-12-17T04:00:49.933 に答える