2010-03-05 3 views
0

В Win32_DiskDrive. Свойство Capabilities имеет тип System.UInt16 [].Свойство WMI Win32_DiskDrive - преобразование UInt16 в строку

Я пытаюсь получить значения с помощью GetProperty и преобразовать их в строку. Но он продолжает бросать ошибку (я не хочу ее заманивать) на свойство Capabilities.

Ошибка: InvalidCastException

Сообщение: Объект должен реализовать IConvertible.

+1

Возможно, часть кода может помочь? – vpram86

ответ

1

Инструмент WMI Code Creator от Microsoft, который может генерировать код 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()); 
} 
+0

ах .. эта часть полезна "foreach (UInt16 arrValue in arrCapabilities)" спасибо! – jaysonragasa

Смежные вопросы