WMI查询-使用并非在所有操作系统中都可用的属性

本文关键字:操作系统 属性 查询 WMI | 更新日期: 2023-09-27 18:19:40

Propery Win32_OperatingSystem'OSArchitecture在Windows 7上可用,但在Windows XP上不可用。我使用WMI代码生成器对此进行了检查。我应该如何更改下面的代码以在两个操作系统(WinXP和Win7)上都工作?

ObjectQuery objectQuery = new ObjectQuery("SELECT OSArchitecture FROM Win32_OperatingSystem");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(objectQuery);
if (searcher.Get().Count == 0) // this line throw exception on Windows XP
    return null;

我知道我可以捕捉到异常,但我正在寻找更好的解决方案

WMI查询-使用并非在所有操作系统中都可用的属性

这对我有效:

string strOSArchitecture = "";
ObjectQuery objectQuery = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(objectQuery);
ManagementObjectCollection results = searcher.Get();
foreach (ManagementObject result in results)
{
   foreach (PropertyData property in result.Properties)
   {
      else if (property.Name.Equals("OSArchitecture"))
      {
         strOSArchitecture = result["OSArchitecture"].ToString();
      }
   }
}