3

ネットワーク上の一連のコンピューターを検索しようとしたときに、ManagementObjectクラスとともにManagementObjectSearcherクラスを発見しました。ManagementObjectSearcherのコンストラクターは、パラメーターとしてsql/sql風のクエリを取ります。現在、レガシーコードで見つけたクエリを使用しています。

ManagementObjectSearcher adapters = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");

しかし、私はクエリに何が含まれている可能性があるかを知る方法を見つけようとしています。すべてのテーブル/オブジェクトは何ですか?考えられるすべての制約は何ですか?このクラスと関連する質問はどのような一般的なトピックに該当するので、これを調べて詳細を知ることができますか?

4

1 に答える 1

7

さらに調査すると、これはWMI(Windows Management Infrastructure)の一部であるように見えます。

WMIクエリ: http: //msdn.microsoft.com/en-us/library/ms186146 (v = vs.80).aspx

WMI検索条件のリスト:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa394554 (v = vs.85).aspx

WMIの使用:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa393964 (v = vs.85).aspx

書籍: http ://www.amazon.com/s/ref=nb_sb_noss_1?url = search-alias%3Daps&field-keywords = WMI

サンプルコード:

       ManagementObjectSearcher adapters = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus = 2");

        foreach (ManagementObject item in adapters.Get())
        {
            foreach (ManagementObject setting in item.GetRelated("Win32_NetworkAdapterConfiguration"))
            {
                if ((!setting["IPAddress"].IsNull()) &&
                    (!setting["IPSubnet"].IsNull()))
                {
                    foreach (string value in (String[])setting["IPAddress"])
                    {
                        mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);                 
                        mySocket.Bind(new IPEndPoint(IPAddress.Parse(value), 49984)); 
                        //etc...
                    }
                }

            }
        }

これは全体としてかなり記念碑的なトピックのように見えますが、少なくともこれは私にそれを理解しようとする場所を与えてくれました。しかし、これが私が解決しようとしている問題の良い解決策であるかどうかについては、まだ完全に確信が持てません。

于 2012-10-04T20:07:22.030 に答える