如何使用 Microsoft.Management.Infrastructure (MMI) 而不是 System.Management 进行本地 WMI 查询
How to use Microsoft.Management.Infrastructure (MMI) instead of System.Management for local WMI queries
我有这个片段可以使用 WMIC
获取 Windows 版本
(from x in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<ManagementObject>()
select x.GetPropertyValue("Version")).FirstOrDefault().ToString();
由于 WMI 现在被认为是遗留的并且 .NET Core implementation of System.Configuration requires up-to-date .NET Framework,似乎需要使用 MMI 检索此信息。
令人惊讶的是,每个 Windows 需要访问 WMI 的问题都有类似于上面代码段的内容。看起来 MMI 的采用率还没有那么高,要找到一个好的 MMI 示例并不容易。
如何使用 Microsoft.Management.Infrastructure
来完成上面的代码?
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 的小提示:由于一些 ,我不得不将其添加到 csproj 文件(x86 用于我们的用例):
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
我有这个片段可以使用 WMIC
获取 Windows 版本(from x in new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<ManagementObject>()
select x.GetPropertyValue("Version")).FirstOrDefault().ToString();
由于 WMI 现在被认为是遗留的并且 .NET Core implementation of System.Configuration requires up-to-date .NET Framework,似乎需要使用 MMI 检索此信息。
令人惊讶的是,每个 Windows 需要访问 WMI 的问题都有类似于上面代码段的内容。看起来 MMI 的采用率还没有那么高,要找到一个好的 MMI 示例并不容易。
如何使用 Microsoft.Management.Infrastructure
来完成上面的代码?
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 的小提示:由于一些
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>