WMI查询 - System.Management.ManagementException

时间:2014-02-13 20:26:48

标签: c# c#-4.0 wmi

我遇到了一些我不太懂的错误。我希望有人可以帮助我。

我获得的第一个例外是我的foreach中的'in'System.Management.ManagementException

下一个是“设备”范围之外的索引。让我感到困惑的是,当它不接受传递给它的变量时,这是有效的。当我重新考虑它以使其更加灵活时,它就破了。

有人能指出我正确的方向吗?

Property和win32Class从主程序传入此类

这是我传递的内容和方式

    static void Main(string[] args)
    {
        GatherSystemINfoWMI.GetPropertyValue("name", "Win32_CDROMDrive");
    }

//这就是我将它传递给

的内容
       public static void GetPropertyValue(string property, string win32Class)
    {

        ManagementObjectSearcher searcher =
      new ManagementObjectSearcher("Select " + property + "from " + win32Class);
        foreach (ManagementObject device in searcher.Get())
        {
            Console.WriteLine("Name: {0} ",
                          device.GetPropertyValue("Name"));
            Console.WriteLine(device.GetPropertyValue(property) + "\n");
            Console.ReadKey();
        }

1 个答案:

答案 0 :(得分:0)

在sql的“from”部分添加一个空格:

替换

"Select " + property + "from " + win32Class

"Select " + property + " from " + win32Class

或者更好地使用string.Format()

string query = string.Format("Select {0} from {1}", property, win32Class);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);