2011-09-20 4 views
2

C#을 사용하여 네트워크 어댑터의 Hardware-Id를 쿼리해야합니다.C#에서 프로그래밍 방식으로 네트워크 어댑터의 hardware-id를 얻는 방법

System.Management를 사용하여 hardwareID가 아닌 deviceID, description 등의 세부 정보를 쿼리 할 수 ​​있습니다.

여기서 listBox1은 winform 앱의 항목을 보여주는 간단한 목록 상자 컨트롤 인스턴스입니다. 예를 들어

:

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 참조를 찾고 있습니다. devcon 명령 도구를 (있는 DevCon hwids = 그물) 사용하여 그러나 나는 각 장치가 어떤 도움을 깊이

+0

아니요. 네트워크 어댑터 용으로 HardwareId가 필요합니다. 그리고 프로세서에 관한 세부 사항은 없습니다. –

답변

3

다른 WMI에 위치한 찾고있는 HardwareID을 평가하는 HardwareId

에 연결되어 있는지 알고 수업. 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 –

관련 문제