2010-03-05 92 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