怎样用WMI 重启一个服务?

解决方案 »

  1.   

    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;
            }
        }
    }public static ReturnValue StopService(string svcName)
    {
        string objPath = string.Format("Win32_Service.Name='{0}'", svcName);
        using (ManagementObject service = new ManagementObject(new ManagementPath(objPath)))
        {
            try
            {
                ManagementBaseObject outParams = service.InvokeMethod("StopService",
                    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;
            }
        }
    }public static ReturnValue ResumeService(string svcName)
    {
        string objPath = string.Format("Win32_Service.Name='{0}'", svcName);
        using (ManagementObject service = new ManagementObject(new ManagementPath(objPath)))
        {
            try
            {
                ManagementBaseObject outParams = service.InvokeMethod("ResumeService",
                    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;
            }
        }
    }public static ReturnValue PauseService(string svcName)
    {
        string objPath = string.Format("Win32_Service.Name='{0}'", svcName);
        using (ManagementObject service = new ManagementObject(new ManagementPath(objPath)))
        {
            try
            {
                ManagementBaseObject outParams = service.InvokeMethod("PauseService",
                    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;
            }
        }
    }