2012-08-01 151 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; 
       } 
相关问题