4

我有这个片段用于使用 WMIC 获取 Windows 版本

(from x in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<ManagementObject>()
                    select x.GetPropertyValue("Version")).FirstOrDefault().ToString();

由于 WMI 现在被认为是遗留的,并且System.Configuration 的 .NET Core 实现需要最新的 .NET Framework,因此似乎需要使用 MMI 检索此信息。

令人惊讶的是,每个需要 WMI 访问的 Windows 问题都有类似于上面的代码段的内容。看起来 MMI 的采用率还没有那么高,而且要找到一个好的 MMI 示例并不容易。

如何使用Microsoft.Management.Infrastructure来完成上面的代码?

4

1 回答 1

5
CimSession.Create(null) // null instead of localhost which would otherwise require certain MMI services running
                .QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_OperatingSystem")
                .FirstOrDefault().CimInstanceProperties["Version"].Value.ToString();

.NET Core 的一个小提示:由于Microsoft.Management.Infrastructure 包的一些运行时标识符问题,我不得不将其添加到 csproj 文件(x86 用于我们的用例):

<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
于 2019-10-31T10:33:01.140 回答