Поделиться через


Практическое руководство. Получение списка служб

Обновлен: Ноябрь 2007

Для извлечения списка служб на определенном компьютере можно использовать метод GetServices класса ServiceController. Метод 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

Практическое руководство. Выполнение задач администрирования служб

Основные понятия

Знакомство со способами взаимодействия с существующими службами