2012-08-01 34 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使用此函數查找設備。它工作,它的工作原理上窗口7,但視窗XP有一個錯誤:對象引用不設置到對象System.Management - 未將對象引用設置爲對象的實例

如何解決這個錯誤的實例?

+1

什麼行確切地拋出異常? – 2012-08-01 03:02:03

+0

很明顯,Windows 7的註冊表和Windows XP註冊表並不完全相同。 – 2012-08-01 04:07:16

+0

[.NET中的什麼是NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-中網) – 2012-08-01 04:12:20

回答

1

在我以前的發展年代,我正面臨着這個問題。這個問題很簡單:管理對象拋出一個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; 
       } 
相關問題