C# 我能否以编程方式启动Windows Management Instrumentation服务?

C# 我能否以编程方式启动Windows Management Instrumentation服务?,c#,c++,.net,windows,wmi,C#,C++,.net,Windows,Wmi,我的应用程序依赖于,但有些用户在其Windows上默认关闭了此功能。按程序启动是个好主意吗?如果是,我该怎么做?任何.NET/C/C++都是受欢迎的根据,如果WMI服务未运行,它“在第一个管理应用程序或脚本请求连接到WMI命名空间时自动启动。” 所以你不需要手动启动它。但如果你需要的话,最好的方法是: using(ServiceController sc = new ServiceController("winmgmt")) { sc.Start(); } 这要求您引用并导入Syste

我的应用程序依赖于,但有些用户在其Windows上默认关闭了此功能。按程序启动是个好主意吗?如果是,我该怎么做?任何.NET/C/C++都是受欢迎的

根据,如果WMI服务未运行,它“在第一个管理应用程序或脚本请求连接到WMI命名空间时自动启动。”

所以你不需要手动启动它。但如果你需要的话,最好的方法是:

using(ServiceController sc = new ServiceController("winmgmt"))
{
    sc.Start();
}

这要求您引用并导入
System.ServiceProcess
命名空间。

我猜它不起作用,因为服务不仅启动了,而且还被禁用了。我必须打开它并手动启动它work@Jack:您可以看到如何使用WinAPI启用服务。这就是我要找的,谢谢!我不确定应该使用什么名称作为serviceName paramaeter?例如,我想获取用户物理mac地址,我正在使用此WQL查询:
Select*FROM Win32\u networkadapter配置
服务名称为
networkadapter配置
?请注意,如果禁用WMI,未经用户许可,不应重新启用它。重新配置不是你的电脑。@HarryJohnston:是的,我知道。我问use他是否想打开WMI。我只是想让应用程序能够做到这一点,一个简单的用户点击一个按钮,而不是他自己做!对于我们的最终用户来说,这可能是一项工作