通過C#開啟服務需要這個C#程序有相應權限,比如服務的賬戶是Local System的就必須以管理員權限運行C#程序才能開啟或關閉。
這里只寫重啟的方式(就是先關閉,后開啟):
// SecurityOfElecService是服務的名字,即ProjectInstaller中serviceInstaller中的ServiceName的值。這個值必須正確,否則下面的serv.CanStop等方法會報異常。
// 可以通過var servs = ServiceController.GetServices();來獲取本機上所有存在的服務(包括正在運行或已關閉的),然后遍歷它進行逐一判斷即可知道是否存在某Windows服務。
ServiceController serv = new ServiceController("SecurityOfElecService");
if (serv.CanStop)
{
// 如果權限不夠是不能Stop()的。
serv.Stop();
// 這句話如果沒有對該服務的后續操作可以不要,C#程序只是以權限向操作系統發出關閉某服務的消息而已,真正關閉該服務的是操作系統而非此C#程序(下面的Start的也一樣)
serv.WaitForStatus(ServiceControllerStatus.Stopped);
}
if (!serv.CanStop) // 不能停止,反過來就是可以開啟
{
serv.Start();
serv.WaitForStatus(ServiceControllerStatus.Running);
}
// 釋放對該服務的控制權及釋放相應資源。
serv.Close();