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 以使用此功能查找设备。它可以在Window 7上运行,但在Window XP上出现错误:对象引用未设置为对象的实例

如何解决这个错误?

4

1 回答 1

3

在我早期的开发中,我遇到了这个问题。手头的问题很简单: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;
                }
于 2014-03-05T10:03:27.377 回答