/// <summary>
/// ensure the service is on local computer
/// </summary>
/// <param name="serviceName">service name</param>
/// <returns>true or false</returns>
public bool IsServiceExisted(string serviceName)
{
ServiceController[] services = ServiceController.GetServices();
foreach (ServiceController sc in services)
{
if (sc.ServiceName == serviceName)
{
return true;
}
}
return false;
}
/// <summary>
/// start the service
/// </summary>
/// <param name="serviceName">the service name</param>
/// <param name="timeOut">the time out of stop service</param>
/// <returns>true or false</returns>
public bool StartService(string serviceName, int timeOut)
{
bool isSuccess = false;
if (IsServiceExisted(serviceName))
{
ServiceController service = new ServiceController(serviceName);
if (ServiceControllerStatus.Running != service.Status &&
ServiceControllerStatus.StartPending != service.Status)
{
service.Start();
service.Refresh();
System.Threading.Thread.Sleep(timeOut);
service.Refresh();
if (ServiceControllerStatus.Running == service.Status)
{
isSuccess = true;
}
}
else
{
isSuccess = true;
}
}
return isSuccess;
}
/// <summary>
/// stop the service
/// </summary>
/// <param name="serviceName">the service name</param>
/// <param name="timeOut">the time out of stop service</param>
/// <returns>success or failed</returns>
public bool StopService(string serviceName, int timeOut)
{
bool isSuccess = false;
if (IsServiceExisted(serviceName))
{
ServiceController service = new ServiceController(serviceName);
if (ServiceControllerStatus.Running == service.Status)
{
service.Stop();
service.Refresh();
System.Threading.Thread.Sleep(timeOut);
service.Refresh();
if (ServiceControllerStatus.Stopped == service.Status)
{
isSuccess = true;
}
}
else
{
isSuccess = true;
}
}
return isSuccess;
}
PS:以Administrator身份才会成功,否则failed,并抛出异常