如何使用.NET中的WMI启动和停止服务?

时间:2010-10-15 00:26:13

标签: .net wmi wmi-service

如何使用WMI从.NET代码启动,停止和查询本地计算机上的服务? (我正在使用C#)

我发现good and accurate answers使用ServiceController类来执行此操作,但如果可以,我想使用WMI。

1 个答案:

答案 0 :(得分:4)

如果您希望在更直观的ServiceController课程中使用WMI,请参阅this article(请原谅配色方案,但它有您想要的内容。)

示例代码(此处的错误处理根据我的喜好进行了硬编码):

using System.Management;

public static ReturnValue StartService(string svcName)
{
    string objPath = string.Format("Win32_Service.Name='{0}'", svcName);
    using (ManagementObject service = new ManagementObject(new ManagementPath(objPath)))
    {
        try
        {
            ManagementBaseObject outParams = service.InvokeMethod("StartService",
                null, null);
            return (ReturnValue)Enum.Parse(typeof(ReturnValue),
            outParams["ReturnValue"].ToString());
        }
        catch (Exception ex)
        {
            if (ex.Message.ToLower().Trim() == "not found" || 
                ex.GetHashCode() == 41149443)
                return ReturnValue.ServiceNotFound;
            else
                throw ex;
        }
    }
}