【问题标题】:select * from Win32_OperatingSystem throwing exceptionselect * from Win32_OperatingSystem 抛出异常
【发布时间】:2014-01-12 17:46:12
【问题描述】:

我有一个 WPF 应用程序,我正在使用以下内容获取我的 PC 的操作系统详细信息:

using (ManagementObjectSearcher win32OperatingSystem = new ManagementObjectSearcher("select * from Win32_OperatingSystem"))
{
     foreach (ManagementObject obj in win32OperatingSystem.Get())
     {
         _operatingSystem = obj["Caption"].ToString();
         _osArchitecture = obj["OSArchitecture"].ToString();
         break;
     }
}

当我踏入这一行时:

win32OperatingSystem.Get())中的ManagementObject obj

我得到以下异常:

查询无效。

这里有什么问题??

【问题讨论】:

  • 你有没有得到任何引发错误的正当理由?
  • 我在某些机器上得到了一个invalid class 异常,但不是在所有机器上

标签: c# wpf system.management


【解决方案1】:

WMI 类有一个命名空间,您没有指定一个。使用WMI Code Creator 使您的查询正确,它会为您生成 C# 代码,您可以直接从该工具运行它以检查结果。

【讨论】:

    【解决方案2】:

    我建议使用EnvironmentOperatingSystem 类的属性(而不是ManagementObjectSearcher)来获取这些详细信息。

    string _operatingSystem = Environment.OSVersion.VersionString;
    

    【讨论】:

    • 这给了我“Microsoft Windows NT 6.1.7601 Service Pack 1”,但我运行的是 Windows 7,这是我想向用户显示的内容。
    • 至少对于 8.1(+) Environment.OSVersion.VersionString 不需要显示正在运行的操作系统。 (而是受 C# 应用程序清单的影响)
    • 你能证明你的建议吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2013-05-24
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多