2012-08-01 4 views
0
private string Find(string key) 
    { 
     string result = null; 
     try 
     { 
      ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity"); 
      foreach (ManagementObject queryObj in searcher.Get()) 
       if (queryObj["Caption"].ToString().Contains(key)) 
       { 
        result = queryObj["Caption"].ToString(); 
        break; 
       } 
     } 
     catch (Exception ex) 
     {                 
       MessageBox.Show(ex.Message);     
     } 
     return result; 
    } 

참조 : System.Management를 추가하면이 기능을 사용하여 divice를 찾을 수 있습니다. 그것은 윈도우 7에서 작동 작동하지만 윈도우 XP에 오류가 있습니다 객체 참조가 객체이 오류를 해결하는 방법System.Management - 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

의 인스턴스로 설정되지 않았습니다?

+1

어떤 라인이 예외를 정확하게 던집니까? –

+0

물론 분명히 윈도우 7 레지스트리 및 Windows XP 레지스트리는 동일하지 않습니다. –

+0

가능한 복제본 [.NET의 NullReferenceException은 무엇입니까?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception- in-net) –

답변

1

저는 이전 개발 년 동안이 문제에 직면했습니다. 문제는 간단합니다. ManagementObject가 NullReferenceException을 던지고 있습니다. 간단한 대답은 속성에 대한 간단한 검사를 추가하는 것입니다 :

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_PnPEntity"); 
      foreach (ManagementObject queryObj in searcher.Get()) 
       if (queryObj["Caption"] != null) 
       { 
        result = queryObj["Caption"].ToString(); 
        break; 
       } 
관련 문제