c# Win服务管理类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceProcess;

namespace Win
{
/// <summary>
/// Win服务控制
/// </summary>
public class WinServiceController
{
public WinServiceController()
{ }

#region 基本控制
/// <summary>
/// 运行服务
/// </summary>
/// <param name="serverName">服务名称</param>
public int RunService(string serverName)
{
try
{
ServiceController sc = new ServiceController(serverName);
ServiceControllerStatus st = sc.Status;
switch (st)
{
case ServiceControllerStatus.StopPending:
case ServiceControllerStatus.Stopped:
sc.Start();
sc.Refresh();
break;
default: break;
}
sc.WaitForStatus(ServiceControllerStatus.Running);
st = sc.Status;
if (st == ServiceControllerStatus.Running)
{
return 1;
}
else
{
return -1;
}
}
catch (Exception ex)
{
throw ex;
}
}

/// <summary>
/// 停止服务
/// </summary>
/// <param name="serverName"></param>
public int StopService(string serverName)
{
try
{
ServiceController sc = new ServiceController(serverName);
ServiceControllerStatus st = sc.Status;
switch (st)
{
case ServiceControllerStatus.Running:
case ServiceControllerStatus.StartPending:
case ServiceControllerStatus.Paused:
case ServiceControllerStatus.PausePending:
case ServiceControllerStatus.ContinuePending:
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped);
break;

}
st = sc.Status;
if (st == ServiceControllerStatus.Stopped)
{
return 1;
}
else
{
return -1;
}
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 获取服务状态
/// </summary>
/// <param name="serverName"></param>
/// <returns></returns>
public int GetStateForService(string serverName)
{
try
{
ServiceController sc = new ServiceController(serverName);
ServiceControllerStatus st = sc.Status;
switch (st)
{
case ServiceControllerStatus.ContinuePending: return 1;
case ServiceControllerStatus.Paused: return 2;
case ServiceControllerStatus.PausePending: return 3;
case ServiceControllerStatus.Running: return 4;
case ServiceControllerStatus.StartPending: return 5;
case ServiceControllerStatus.Stopped: return 6;
case ServiceControllerStatus.StopPending: return 7;
default: return 0;
}
}
catch (Exception ex)
{
throw ex;
}
}

#endregion
}
}

posted @ 2011-10-16 18:44  糯米小虾  阅读(273)  评论(0)    收藏  举报