Свойство WMI Win32_DiskDrive Capabilities - преобразование UInt16 в строку - PullRequest
0 голосов
/ 05 марта 2010

В Win32_DiskDrive. Есть свойство Capabilities, которое имеет тип System.UInt16 [].

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

Ошибка была: InvalidCastException

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

1 Ответ

1 голос
/ 06 марта 2010

Существует инструмент 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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...