2010年6月24日 星期四

在C#中啟動服務(Service)

在Windows系統裡面有非常多的服務
但是有些時後服務並不會自動開啟
例如快速插拔硬體後,有些相關的服務會沒有被啟動(例如手寫板)
所以這時候就需要另外啟動這些服務了

如果要手動啟動這些服務,可以到
控制台->系統管理工具->服務
找到相關的服務並按滑鼠右鍵啟動

但是有時候在程式進行中一樣會發現服務沒被啟動
就需要用ServiceController去操作服務的狀態了

private void StartService(string s)
{
try
{
ServiceController sc = new ServiceController(s);

/// if service is stopped, start it
if (sc.Status ==
ServiceControllerStatus.Stopped)
{
/// start the service
sc.Start();
sc.WaitForStatus(
ServiceControllerStatus.Running);
}
}
catch (Exception e)
{
Console.WriteLine(
"Exception : ", e.Message);
}
}

因為服務名稱可能傳入錯誤,或是在該裝置上沒有該服務
(例如一般XP上面沒有觸控筆的服務)
所以在使用的時候建議使用try-catch

傳入的參數就是服務的名稱,例如觸控筆的服務

StartService("TabletInputService");

--
參考資料
ServiceController 類別
StartService Function