我正在尝试获取有关从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
有什么想法吗?
答案 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
。