在Win32_DiskDrive中。有一个Capabilities属性,其类型为System.UInt16 []。
我试图通过使用GetProperty获取值并将其转换为字符串。但是它一直在Capabilities属性上抛出错误(我不想捕获它)。
错误是:InvalidCastException
消息:对象必须实现IConvertible。
答案 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());
}