【问题标题】:Can I start the Windows Management Instrumentation service programatically?能否以编程方式启动 Windows Management Instrumentation 服务?
【发布时间】:2016-04-25 18:05:12
【问题描述】:

我的应用程序依赖于WMI,但有些用户在他们的 Windows 上默认关闭了它。以编程方式启动它是个好主意吗?如果是这样,我该怎么做?欢迎任何.NET/C/C++

【问题讨论】:

    标签: c# c++ .net windows wmi


    【解决方案1】:

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

    所以您不需要手动启动它。但如果您需要,ServiceController class 将是一种方式:

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

    这需要您引用和导入 System.ServiceProcess 命名空间。

    【讨论】:

    • 我猜它不起作用,因为该服务不仅启动了,它也被禁用了。我不得不打开它并手动开始它的工作
    • @Jack :您可以查看this answer 了解如何使用 WinAPI 启用服务。
    • 这就是我要找的,谢谢!我不确定应该使用什么名称作为 serviceName 参数?例如,我想获取用户物理mac地址,我正在使用这个WQL查询:Select * FROM Win32_NetworkAdapterConfiguration服务名称是NetworkAdapterConfiguration?
    • 请注意,如果 WMI 被禁用,您不应在未事先征得用户许可的情况下重新启用它。需要重新配置的不是您的计算机。
    • @HarryJohnston:是的,我知道。如果他想打开 WMI,我会问用户。我只是想让应用程序能够通过简单的用户点击按钮来完成,而不是他自己完成!对于我们的最终用户来说,这可能是一些工作
    猜你喜欢
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2018-10-07
    • 2010-09-18
    • 2017-10-22
    相关资源
    最近更新 更多