2011-09-20 44 views
2

C#を使用してネットワークアダプターのHardware-Idを照会する必要があります。C#でネットワークアダプターのhardware-idをプログラムで取得する方法

System.Managementを使用すると、deviceID、descriptionなどの詳細は照会できますが、ハードウェアIDは照会できません。

ここで、listBox1はwinformアプリケーションのアイテムを表示するための単純なリストボックスコントロールインスタンスです。 EXのために

ManagementObjectCollection mbsList = null; 
ManagementObjectSearcher mbs = new ManagementObjectSearcher("Select * From Win32_NetworkAdapter"); 
       mbsList = mbs.Get(); 
       foreach (ManagementObject mo in mbsList) 
       { 
        listBox1.Items.Add("Name : " + mo["Name"].ToString()); 
        listBox1.Items.Add("DeviceID : " + mo["DeviceID"].ToString()); 
        listBox1.Items.Add("Description : " + mo["Description"].ToString()); 
       } 

は、しかし、私はのHardwareIdを得ることができる方法はありませんMSDN WMIの参照を見て。私は、各デバイスは、すべてのヘルプが深く、あなたが探しているハードウェアIDが別のWMIに位置しています

+0

いいえネットワークアダプタ用にHardwareIdが必要です。また、プロセッサに関する詳細はありません。 –

答えて

3

を高く評価しているのHardwareId

に関連付けられていることを知っているがDEVCONツール(DEVCONのhwids =ネット)を使用することにより クラス。 Win32_NetworkAdapeterのインスタンスを取得したら、PNPDeviceIdを使用してWin32_PnpEntryを選択できます。以下は、すべてのネットワークアダプタとそのハードウェアIDを記載したサンプルコードです。

 ManagementObjectSearcher adapterSearch = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_NetworkAdapter"); 

     foreach (ManagementObject networkAdapter in adapterSearch.Get()) 
     { 
      string pnpDeviceId = (string)networkAdapter["PNPDeviceID"]; 
      Console.WriteLine("Description : {0}", networkAdapter["Description"]); 
      Console.WriteLine(" PNPDeviceID : {0}", pnpDeviceId); 

      if (string.IsNullOrEmpty(pnpDeviceId)) 
       continue; 

      // make sure you escape the device string 
      string txt = "SELECT * FROM win32_PNPEntity where DeviceID='" + pnpDeviceId.Replace("\\", "\\\\") + "'"; 
      ManagementObjectSearcher deviceSearch = new ManagementObjectSearcher("root\\CIMV2", txt); 
      foreach (ManagementObject device in deviceSearch.Get()) 
      { 
       string[] hardwareIds = (string[])device["HardWareID"]; 
       if ((hardwareIds != null) && (hardwareIds.Length > 0)) 
       { 
        Console.WriteLine(" HardWareID: {0}", hardwareIds[0]); 
       } 
      } 
     } 
+1

Simonが無効なクエリ例外を受け取りました。 –

+1

私の環境:XP Embedded SP-2 –

関連する問題