可以使用System.ServiceProcess.ServiceController類控制Windows Services。
CUI項目需要添加System.ServiceProcess引用。
注意服務名稱和顯示名稱是不同的,我們調用時使用的是服務名稱。在服務名稱單擊右鍵,其屬性視窗中可看到詳細資料。
如自動更新服務,“Automatic Updates”是顯示名稱,其服務名稱是:wuauserv。
1. 擷取全部服務及其狀態
ServiceController[] scs = ServiceController.GetServices();
foreach (ServiceController sc in scs)
{
Console.WriteLine("{0}({1}); Status:{2}", sc.DisplayName, sc.ServiceName, sc.Status);
}
2. 檢查服務是否已經安裝
bool exists = false;
ServiceController[] scs = ServiceController.GetServices();
foreach (ServiceController sc in scs)
{
if (string.Compare(sc.ServiceName, "MSSQLSERVER", true) == 0)
{
exists = true;
break;
}
}
3. 檢查服務狀態
ServiceController sc = new ServiceController("MSSQLSERVER");
if (sc.Status == ServiceControllerStatus.Stopped)
Console.WriteLine("Stopped");
4. 啟動或停止服務 (可能還要用到CanStop等屬性)
ServiceController sc = new ServiceController("MSSQLSERVER");
if (sc.Status == ServiceControllerStatus.Stopped)
{
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running);
}
else
{
sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped