C#判斷某個Windows服務是否處於運行狀態
直接上代碼:
定義方法:
#region 判斷某個Windows服務是否處於運行狀態
/// <summary>
/// 判斷某個Windows服務是否處於運行狀態
/// </summary>
/// <param name="serviceName">要判斷的Windows服務名稱</param>
/// <param name="serviceNameMaxLength">服務名稱字符串的最大匹配長度,比如mssqlserver的長度11,可能有的是mssqlserver2008,可以把這個參數指定爲16</param>
/// <returns>處於運行狀態返回true,否則返回false</returns>
public static bool ServiceIsRunning(string serviceName, int serviceNameMaxLength)
{
bool result = false;
System.ServiceProcess.ServiceController[] services = System.ServiceProcess.ServiceController.GetServices();
foreach (System.ServiceProcess.ServiceController sc in services)
{
if (sc.ServiceName.ToLower().Contains(serviceName.ToLower()) && sc.ServiceName.Length < serviceNameMaxLength)
{
if (sc.Status.ToString().ToLower() == "running")
{
result = true;
break;
}
}
}
return result;
}
#endregion
調用代碼,比如判斷SQLServer是否處於運行狀態
#region 先判斷mssqlserver服務是否啓動,如果沒有啓動則直接返回false
if (!Wongoing.Basic.WinCmdHelper.ServiceIsRunning("mssqlserver", 21))
{
Console.WriteLine("mssqlserver服務未啓動!");
}
#endregion