WMI Win32_OperatingSystem OSArchitecture字段导致异常

时间:2010-03-22 11:48:52

标签: .net wmi

我正在尝试获取有关从WMI安装的Windows版本的信息。大多数领域都有效我可以获得操作系统“Name”以及“Version”,它们都是我拥有的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 个答案:

答案 0 :(得分:1)

您的原始问题有:

strOSArchitecture = mo("Architecture")

应该是:

strOSArchitecture = mo("OSArchitecture")

现在你已经确认这是问题中的一个简单错字(不是你的实际代码),另一种可能是你在Server 2003,2000,NT4,XP或Me / 98/95上运行,其中文档将OSArchitecture密钥列为不可用?

答案 1 :(得分:1)

要查看可用属性的当前(运行时)列表,请遍历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