2013年6月26日 星期三

[C#]啟用Windows服務

ServiceController sc = new ServiceController();
private void StartService(string s)
{
    try
    {
        sc.ServiceName = s;
        /// if service is stopped, start it
        if (sc.Status == ServiceControllerStatus.Stopped)
        {
            //啟動類型設為自動(手動、自動、已停用)
            //如果啟動類型為已停用會導致無法啟用該服務
            Process.Start("sc", "config Messenger start= auto");
            
            //因為服務的啟動類型更改會需要一點時間
            //所以我先在程式中放置一個Timer設定為5000毫秒
            timer1.Start();
        }
    }
    catch (Exception e)
    {
        Console.WriteLine("Exception : ", e.Message);
    }
}

private void timer1_Tick(object sender, EventArgs e)
{
    //服務狀態設為啟用
    sc.Start();
    sc.WaitForStatus(ServiceControllerStatus.Running);
    timer1.Stop();
}

沒有留言:

張貼留言