2010-03-05 94 views
0

在Win32_DiskDrive中。有一个Capabilities属性,它有一个System.UInt16 []类型。WMI Win32_DiskDrive功能属性 - 将UInt16转换为字符串

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

错误是:InvalidCastException的

消息:对象必须实现IConvertible。

+1

也许一段代码可以帮忙吗? – vpram86 2010-03-05 10:26:08

回答

1

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

现在回到问题。从System.UInt16[]语法我假设你正在使用C#。下面是演示如何访问Capabilities阵列的各个元素C#示例代码(通过WMI代码造物主产生,有一些小的改动):

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()); 
} 
+0

啊..这个部分很有用“foreach(arrCapabilities中的UInt16 arrValue)”谢谢! – jaysonragasa 2010-03-07 08:36:07