用ServiceController操作Window Services

ServiceController是個不錯用的東西,除了可以取得Window Service的資訊,還可以停止或啟用服務等,算是很便利的功能.

ServiceController是個不錯用的東西,除了可以取得Window Service的資訊,還可以停止或啟用服務等,算是很便利的功能.

使用方式也很簡單,首先要先把System.ServiceProcess加入參考,這個不是預設就會加入的.

再來就可以直接拿ServiceController這個Class來用.

ServiceController[] sc=ServiceController.GetServices();

這樣就可以取得本機所有的Window Services,GetService(string MachineName)也可以取得別台電腦的資訊,但當然要有權限.

用TreeView來Demo Window Services的資訊.

treeView1.BeginUpdate();
treeView1.Nodes.Clear();
foreach (ServiceController s in sc)
{
	//取得服務名稱
	TreeNode tn = treeView1.Nodes.Add(s.DisplayName);
	if (s.Status == ServiceControllerStatus.Stopped)
	{//如果服務是停止的,那就用紅字顯示
		tn.ForeColor = Color.Red;
	}
	tn.ToolTipText = s.Status.ToString();//ToolTip顯示服務狀態
	foreach (ServiceController d in s.ServicesDependedOn)
	{//看一下這個服務是依賴那些服務
		TreeNode t = tn.Nodes.Add(d.DisplayName);
		if (d.Status == ServiceControllerStatus.Stopped)
		{
			t.ForeColor = Color.Red;
		}
		t.ToolTipText = d.Status.ToString();
	}
}
treeView1.Sort();
treeView1.EndUpdate();

以下就是展示出來的樣子.

image

用ServiceController也可以對服務做停止,暫停,啟動等,也可以用WaitForStatus等服務到指定的狀態.

 

其它就參考MSDN上的說明 :

ServiceController 成員