.net WMI Win32_OperatingSystem OSArchitecture字段导致异常
我正在尝试获取有关从WMI安装的Windows版本的信息。大多数领域都在工作。我可以获得操作系统“名称”和“版本”,这两个字段都是我拥有的Win32_OperatingSystem对象的字段 但另一个字段“OSArchitecture”生成异常(“未找到”) 文档说明该字段应该存在,并且是一个字符串:.net WMI Win32_OperatingSystem OSArchitecture字段导致异常,.net,wmi,.net,Wmi,我正在尝试获取有关从WMI安装的Windows版本的信息。大多数领域都在工作。我可以获得操作系统“名称”和“版本”,这两个字段都是我拥有的Win32_OperatingSystem对象的字段 但另一个字段“OSArchitecture”生成异常(“未找到”) 文档说明该字段应该存在,并且是一个字符串: 有什么想法吗?你最初的问题是这样的: strOSArchitecture = mo("Architecture") 应该是: strOSArchitecture = mo("OSArchite
有什么想法吗?你最初的问题是这样的:
strOSArchitecture = mo("Architecture")
应该是:
strOSArchitecture = mo("OSArchitecture")
既然您已经确认这是问题中的一个简单输入错误(不是您的实际代码),那么另一种可能是您运行的是Server 2003、2000、NT4、XP或Me/98/95,其中文档将OSArchitecture
键列为不可用?以查看可用属性的当前(运行时)列表,遍历属性
属性。
在控制台应用程序中,它看起来像:
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
。可能是一个愚蠢的问题…您是否在win32 OS上运行查询…我想如果是x64,它可能不在那里。它在32位Windows 7上运行。抱歉,它确实在运行。在尝试使用不同的名称修复此问题后,我粘贴了错误版本的代码。“OSArchitecture”出现异常。我将编辑我的问题。我现在意识到它取决于目标机器。我用Gimel的想法编写了一个小程序moTest,并在2003年和2008年的机器上运行它。2008年计算机返回了一个具有OSArchitecture属性的mo,而2003年计算机返回了一个不具有OSArchitecture属性的mo。您能否编辑您的答案以删除对属性名称的更正并仅包含实际答案?这将解释此异常。但是,既然实际的本机WMI类定义了这样一个字段(OSArchitecture),为什么它不作为属性存在呢?桥上的虫子?
For Each mo In searcher.Get
Console.WriteLine("..." + mo.Properties.Count.ToString() + " properties")
For Each prop In mo.Properties
Console.WriteLine(prop.Name)
Next
'...