代码之家  ›  专栏  ›  技术社区  ›  Boinst

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

  •  1
  • Boinst  · 技术社区  · 15 年前

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

    我找到了 good and accurate answers 用于使用ServiceController类执行此操作,但如果可以,我希望使用WMI。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Steve Townsend    15 年前

    如果您希望通过更直观的方式使用WMI ServiceController 类,参见 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;
            }
        }
    }
    
    推荐文章