WMI Win32_OperatingSystem OSArchitecture поле вызывает исключение - PullRequest
0 голосов
/ 22 марта 2010

Я пытаюсь получить информацию о версии Windows, установленной из WMI. Большинство полей работают. Я могу получить имя операционной системы и имя версии, оба поля у меня есть объект Win32_OperatingSystem.

Но другое поле "OSArchitecture" генерирует исключение ("Не найдено").

    strScope = "\\" + strServer + "\root\CIMV2"
    searcher = New ManagementObjectSearcher(strScope, "SELECT * FROM Win32_OperatingSystem")

    For Each mo In searcher.Get

        strOSName = mo("Name")
        strOSVersion = mo("Version")
        strOSArchitecture = mo("OSArchitecture")
        strStatus = mo("Status")
        strLastBoot = mo("LastBootUpTime")

    Next

Документация говорит, что поле должно существовать и является строкой:

http://msdn.microsoft.com/en-us/library/aa394239(VS.85).aspx

Есть идеи?

Ответы [ 2 ]

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

Чтобы просмотреть текущий (доступный) список доступных свойств, перейдите по атрибуту Properties. В консольном приложении это выглядит так:

For Each mo In searcher.Get
    Console.WriteLine("..." + mo.Properties.Count.ToString() + " properties")
    For Each prop In mo.Properties
        Console.WriteLine(prop.Name)
    Next
    '...

В моей установке XP в списке имен 61 перечисленных свойств не отображается OSArchitecture.

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

В вашем исходном вопросе была строка:

strOSArchitecture = mo("Architecture")

, которая должна была быть:

strOSArchitecture = mo("OSArchitecture")

Теперь, когда вы подтвердили, что это была простая опечатка в вопросе (не вашафактический код), другая вероятность заключается в том, что вы работаете на Server 2003, 2000, NT4, XP или Me / 98/95, где в документации указан ключ OSArchitecture как недоступный?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...