[C#][WinForm]如何控制Windows Services
看到網友發問,自己實作紀錄一下。
首先須將System.ServiceProcess加入參考並引用。
ServiceController 類別:表示 Windows 服務,可以讓您連接到執行中或已停止的服務進行管理,或取得關於服務的資訊。
一、取得本機所有服務名稱和狀態
#region 取得本機所有服務名稱和狀態
private void GetAllServices()
{
ServiceController[] AllServices;
try
{
AllServices = ServiceController.GetServices();
listView1.Items.Clear();
String[] Result = new String[ 2 ];
foreach( ServiceController SC in AllServices )
{
Result[ 0 ] = SC.ServiceName;
Result[ 1 ] = SC.Status.ToString();
ListViewItem lvi = new ListViewItem( Result );
listView1.Items.Add( lvi );
}
}
catch( Exception ex )
{
MessageBox.Show( "錯誤: " + ex.Message );
}
}
#endregion
二、啟動/停止服務控制
#region 服務控制
private String ServiceControl( Boolean request )
{
ServiceController SC;
String result = String.Empty;
for( Int32 i = 0; i < listView1.Items.Count; i++ )
{
if( listView1.Items[i].Selected )
{
SC = new ServiceController( listView1.Items[ i ].SubItems[ 0 ]
.Text.ToString() );
if( request )
{
if( SC.CanStop )
{
SC.Stop();
result= listView1.Items[ i ].SubItems[ 0 ].Text.ToString()
+"服務已停止!";
}
}
else
{
if( ( SC.Status.ToString() != "Started" ) & ( SC.Status.ToString() != "Pending Start" ) )
{
SC.Start();
result= listView1.Items[ i ].SubItems[ 0 ].Text.ToString()
+ "服務已啟動!";
}
}
}
}
GetAllServices();//重新取得資訊
return result;
}
#endregion
執行畫面
停止Windows Time Services
啟動Windows Time Services
範列下載:servicecontrol.rar
參考