如何:检索服务列表

更新:2007 年 11 月

可以使用 ServiceController 类的 GetServices 方法检索一台特定计算机上的服务列表。GetServices 方法返回计算机的所有可用服务(与设备驱动程序关联的服务除外)的数组。可以使用 GetDevices 方法检索设备驱动程序服务。

对于这两种方法,既可以选择有兴趣检索其信息的特定计算机,也可以不传递任何参数,只检索本地计算机上的服务。

检索服务列表

  1. 创建 ServiceController 类型的数组以包含查询结果。

  2. 使用下列方式之一,调用 ServiceController 类的适当方法,并将结果设置为数组:

    • 若要从本地计算机检索非设备驱动程序服务,请调用 GetServices 方法,并且不使用任何参数:

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetServices()
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetServices();
      
      System.ServiceProcess.ServiceController services[];
      services = System.ServiceProcess.ServiceController.GetServices();
      
    • 若要从特定计算机检索非设备驱动程序服务,请调用 GetServices 方法,并将要从中检索信息的计算机指定为一个字符串参数:

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetServices( _
         "machinename")
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetServices(
                 "machinename");
      
    • 若要从本地计算机检索设备驱动程序服务,请调用 GetDevices 方法,并且不使用任何参数:

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetDevices()
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetDevices();
      
      
    • 若要从特定计算机检索设备驱动程序服务,请调用 GetDevices 方法,并将要从中检索信息的计算机指定为一个字符串参数:

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetDevices( _
         "machinename")
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetDevices(
                 "machinename");
      

    下面的代码演示如何在本地计算机上检索一组服务并在列表框中显示有关每项服务的信息。请注意,GetServices 方法返回 ServiceController 对象的数组。返回的每个 ServiceController 都表示正在查询的计算机上的一项服务:

    Sub ListServices()
        Dim ListBox1 As ListBox
    
        Dim services() As System.ServiceProcess.ServiceController
        Dim i As Integer
        services = System.ServiceProcess.ServiceController.GetServices()
        ListBox1.Items.Clear()
        For i = 0 To services.Length - 1
            ListBox1.Items.Add(services(i).ServiceName)
        Next
    End Sub
    
     private void ListServices()
        {
            ListBox listBox1 = null;
    
            System.ServiceProcess.ServiceController[] services;
            services = System.ServiceProcess.ServiceController.GetServices();
            listBox1.Items.Clear();
            for (int i = 0; i < services.Length; i++)
            {
                listBox1.Items.Add(services[i].ServiceName);
            }
        }
    

此代码示例也可用作 Visual Basic IntelliSense 代码段。在代码段选择器中,它位于“Windows 操作系统”>“Windows 服务”中。有关更多信息,请参见如何:在代码中插入代码段 (Visual Basic)

请参见

任务

如何:创建 ServiceController 组件实例

如何:对服务执行管理任务

概念

与现有服务进行通信的介绍