[C#][WinForm]如何控制Windows Services

[C#][WinForm]如何控制Windows Services

看到網友發問,自己實作紀錄一下。

首先須將System.ServiceProcess加入參考並引用。

image

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

 

 

 

執行畫面

image

停止Windows Time Services

image image

啟動Windows Time Services

image image

 範列下載:servicecontrol.rar

參考

ServiceController.Start

ServiceController.Stop