c# - 通过 MI 访问 WMI 实例,无需 WS-Management 服务
问题描述
我正在尝试通过 C# 中的 Microsoft.Management.Infrastructure API 访问本地主机上的 Windows 7 和 Windows 10 Embedded 上的 WMI 类。它使用以下代码段中的代码工作,但前提是我启动了 Windows 远程管理 (WS-Management) 服务。
我注意到即使没有启动 WS-Management 服务,我也可以通过 Get-WmiObject 等 Powershell cmdlet 访问这些类。如果没有通过 Microsoft 管理基础结构 API 启动的服务,是否有任何方法可以访问 WMI?
CimSession cimSession = CimSession.Create("localhost");
IEnumerable<CimInstance> enumeratedInstances = cimSession.EnumerateInstances(@"root\cimv2", "Win32_Process");
foreach (CimInstance cimInstance in enumeratedInstances)
{
Console.WriteLine("{0}", cimInstance.CimInstanceProperties[ "Name" ].Value.ToString());
}
解决方案
所以,我遇到了同样的问题。此外,Windows.Management.Instrumentation 在 .NET Core 中不可用,但 Microsoft.Management.Infrastructure 可用。
在大量谷歌搜索的帮助下,我终于找到了可行的选项。似乎要设置本地会话,您必须使用 DCOM 会话选项。
这是对我有用的代码:
var sessionOptions = new DComSessionOptions
{
Timeout = TimeSpan.FromSeconds(30)
};
var cimSession = CimSession.Create("localhost", sessionOptions);
var volumes = cimSession.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_Volume");
foreach (var volume in volumes)
{
Console.WriteLine(volume.CimInstanceProperties["Name"].Value);
}
推荐阅读
- java - 如何在将数据发送到 Firebase 数据库之前对其进行加密?
- python - 在python中使用一个testclass函数到另一个testclass
- r - 错误:参数数量不正确 (5),“rlang_quos_interp”应为 4
- javascript - OwlCarousel2 显示空白幻灯片,而其他所有 HTML 标记都显示正常
- date - 谷歌表 - 脚本/条件格式 > 根据日期设置列的背景颜色 1/今天之前 = 红色 2/今天 = 黄色
- java - 已删除的实例传递给合并
- jsp - jsp 页面显示 javax.servlet.ServletException: java.lang.OutOfMemoryError: Java heap space
- r - Creating all possible combinations of items and doing calculations simultaneously
- python - Django 显示的日期时间与系统日期时间不同
- android - 如何展示原生广告?