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 ではエラーが発生します: object reference not set to an instance of an object

このエラーを解決するにはどうすればよいですか?

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 に答える