[C#]用程式控制Window service狀態

[C#]用程式控制Window service狀態

今天在寫一支程式時剛好用到,貼一下,所謂的Window service指的是電腦中的這一串東西:

image

有時候我們程式可能要先監控某個服務是否啟動,如果還沒啟動的話,我們的程式可能會發生錯誤,這時候如果能自動幫他啟動就最好囉,這就是我今天寫這個程式的用意。

程式非常簡單,如下:

ServiceController tController = new ServiceController();
//指到本機
tController.MachineName = ".";
//服務的名稱
tController.ServiceName = "IISADMIN";

//如果是關閉的就幫它啟動,如果是啟動的就幫它關閉
if (tController.Status == ServiceControllerStatus.Stopped)
{
    tController.Start();
}
else if (tController.Status == ServiceControllerStatus.Running)
{
    tController.Stop();
}

如果找不到ServiceController的話,請using System.ServiceProcess;,如果using不到,請加入System.ServiceProcess.dll的參考。

這邊有個注意事項,就是ServiceName要填什麼,我們看一下,上面我們是拿IIS Admin這個服務來示範,但我上頭打的ServiceName卻是IISADMIN:

image

如果我們依上頭介面的中顯示的名稱去取得Service,會找不到,我們點選這個服務的『內容』看一下它的屬性,裡頭有個『服務名稱』,這個名稱才是ServiceController實際用來取得此Window service的ServiceName,這邊要特別注意一下囉。

image

簡單的說明,參考參考。

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。