ManagementObjectSearcher在WMI数组属性上

我正在运行下面的代码,试图获取它运行的设备的ChassisType。

string wmiQuery = string.Format(
    "SELECT ChassisTypes FROM Win32_SystemEnclosure");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
foreach (ManagementObject obj in searcher.Get())

当我运行这个,并尝试将其转换为字符串时,它给了我一个空字符串。 当我尝试检查searcher.get()在Autos中返回的内容时。 它给了我一个评估时间,然后是一个例外......如果我让它运行,它确实会返回

我忽略了评估,因为当我尝试和检查其他WMI查询时,我得到相同的异常,并且我知道它们工作并返回了所需的值。 我也不知道从哪里开始,尽管它妨碍了故障排除。

我认为问题是ChassisTypes属性是一个数组......但我不知道如何获取值。 我不能在我的“obj”管理对象上运行另一个foreach,因为管理对象确实有一个GetEnumerator。

关于如何排序评估超时的任何想法......或甚至更好2.访问WMI数组属性。

干杯


排序2.通过正确的谷歌搜索:P

我不得不将搜索器返回的对象转换为数组,然后遍历该数组以获取我的值:

    var deviceType = "";
    string wmiQuery = string.Format(
        "SELECT ChassisTypes FROM Win32_SystemEnclosure");
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
    ManagementObjectCollection qCollect = searcher.Get();
    foreach (ManagementObject obj in qCollect)
    {
        Int16[] rs = (Int16[])obj["ChassisTypes"];
        foreach (var item in rs)
        { 
            if (item == 9 ||
                item == 10 ||
                item == 14)
            {
                deviceType = "Laptop";
            }
            else
            {
                deviceType = "Non-Laptop";
            }

仍然不知道为什么当我尝试查看搜索器时遇到异常。 但我的问题是排序的。

链接地址: http://www.djcxy.com/p/19199.html

上一篇: ManagementObjectSearcher on WMI array property

下一篇: Programmatically join Windows machine to AD domain