zoukankan      html  css  js  c++  java
  • Controlling behavior of existing services in system

    This article shows how to access the windows services in your system and change the behavior of the services from your application.

    The example application with this article shows a simple windows application which fetches the services into a ListView and changing its status by click of the button.

    This application uses ServiceController component to connect to and control the behavior of existing services.

    I have used the GetServices() method on the ServiceController class to retrieve a list of the services on a particular computer. The GetServices method returns an array of all of a computer's available services, except for those associated with device drivers. You can retrieve the device driver services using the GetDevices method.

    Fetching Services:

    Here is the code to fetch all the services:

    private void listService()

    {

              ServiceController[] ser;

              ser = ServiceController.GetServices();

              listView1.Items.Clear();

              for (int i = 0; i < ser.Length; i++)

              {

                       string str1=ser[i].ServiceName;

                       System.ServiceProcess.ServiceController sc2 = new System.ServiceProcess.ServiceController(str1);

                       listView1.Items.Add(str1);

                       if (sc2.Status.Equals(System.ServiceProcess.ServiceControllerStatus.Stopped))

                       {

                                 listView1.Items[i].ForeColor=Color.Red;

                                 listView1.Items[i].SubItems.Add("Stopped");

                       }

                       else

                       {

                                 listView1.Items[i].ForeColor=Color.Blue;

                                 listView1.Items[i].SubItems.Add("Started");

                       }       

              }

    }

    Here I have ListView control with two columns. The first column display's the service name and the second column displays the current status.

    Different row color is given for services whose status is stopped or started.

    Starting Service:

    The code below shows how to start the service whose status is stopped now:

    private void StartService()

    {

              ListView.SelectedListViewItemCollection seltest = listView1.SelectedItems;

              ListViewItem lt = seltest[0];

              string str1 = lt.Text;                    

              string str2 ="Already Started";

              DialogResult res;

              System.ServiceProcess.ServiceController sc2 = new System.ServiceProcess.ServiceController(str1);

              if (sc2.Status.Equals(System.ServiceProcess.ServiceControllerStatus.Running))

              {

                       res=MessageBox.Show(this,str2);

              }

              else

              if (sc2.Status.Equals(System.ServiceProcess.ServiceControllerStatus.Stopped))

              {

                       sc2.Start();

                      

              }

              listService();
    }

    Stopping Service:

    The code below shows how to stop the service whose status is started now:

    private void StopService()

    {

              ListView.SelectedListViewItemCollection seltest = listView1.SelectedItems;

              ListViewItem lt = seltest[0];

              string str1 = lt.Text;

              string str2 ="Already Stopped";

              DialogResult res;

              System.ServiceProcess.ServiceController sc2 = new System.ServiceProcess.ServiceController(str1);

              if (sc2.Status.Equals(System.ServiceProcess.ServiceControllerStatus.Stopped))

              {

                       res=MessageBox.Show(this,str2);

              }

              else

              if (sc2.Status.Equals(System.ServiceProcess.ServiceControllerStatus.Running))

              {

                       sc2.Stop();

              }

              listService();

    }

    All I have done here in above two codes is to check the status of the selected service from ListView. Depending upon the status I am changing the status to start or stop by calling Start() and Stop() method of the ServiceController class.

    In this example application, I have also used the ContextMenu. One can start and stop the service by right clicking on the service name and clicking the appropriate option.

    Here is the snapshot of the application:

    Until next time.

    Happy .NETing!

  • 相关阅读:
    在安装SqlServer2008时,有一项安装程序支持规则,为什么重新启动计算机那一项总是失败
    在 ServiceModel 客户端配置部分中,找不到引用协定“WebServiceTest.WebServiceSoap”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素
    IIS7上设置MIME让其支持android和Iphone的更新下载
    c# 常用正则
    数据库增容方法
    初识MAC(由window到mac的转变适应)
    无需控件直接导出xls(csv)
    2017中国屏幕分辨率统计---UI设计应注重的问题
    网页制作基础及HTML教学模块安排
    传统教学设计模板
  • 原文地址:https://www.cnblogs.com/adam/p/663213.html
Copyright © 2011-2022 走看看