WMI Win32_DiskDrive功能属性 - 将UInt16转换为String

时间:2010-03-05 10:20:37

标签: wmi

在Win32_DiskDrive中。有一个Capabilities属性,其类型为System.UInt16 []。

我试图通过使用GetProperty获取值并将其转换为字符串。但是它一直在Capabilities属性上抛出错误(我不想捕获它)。

错误是:InvalidCastException

消息:对象必须实现IConvertible。

1 个答案:

答案 0 :(得分:1)

Microsoft提供的WMI Code Creator工具可以生成C#,Visual Basic .NET和VBScript代码,以便您运行任何WMI查询并枚举结果。它对于探索WMI名称空间和类非常有用,因此在处理WMI时它是必须的。

现在回到这个问题。从System.UInt16[]语法我假设您正在使用C#。下面是示例C#代码(由WMI Code Creator生成,稍作修改),演示了如何访问Capabilities数组的各个元素:

ManagementObjectSearcher searcher = 
    new ManagementObjectSearcher("root\\CIMV2", 
    "SELECT * FROM Win32_DiskDrive"); 

foreach (ManagementObject queryObj in searcher.Get())
{
    if(queryObj["Capabilities"] == null)
        Console.WriteLine("Capabilities: {0}", queryObj["Capabilities"]);
    else
    {
        UInt16[] arrCapabilities = (UInt16[])(queryObj["Capabilities"]);
        foreach (UInt16 arrValue in arrCapabilities)
        {
            Console.WriteLine("Capabilities: {0}", arrValue);
        }
    }
    Console.WriteLine();
}

要将UInt16值转换为字符串,您可以使用ToString方法,例如:

foreach (UInt16 arrValue in arrCapabilities)
{
    Console.WriteLine(arrValue.ToString());
}