Остановка, запуск, рестарт служб Windows на C#

Остановка, запуск, рестарт служб Windows на C#

Всем доброго времени суток. На связи Алексей Гулынин. В данной статье я бы хотел показать как можно запускать, останавливать, перезапускать службы в Windows на C#. Для этого будем использовать класс ServiceController, который позволяет подключаться к службе, управлять ею и получать сведения о ней. Чтобы работать с этим классом в проект необходимо добавить ссылку на System.ServiceProcess. Сам код:

using System;
using System.ServiceProcess; // нужно добавить ссылку в проект

namespace TestConsoleApp
{
  class Program
  {
    // Экспериментировать будем со службой центра обновления Windows
    static void Main(string[] args)
    {
      StopService("Центр обновления Windows");
      StartService("Центр обновления Windows");
      RestartService("Центр обновления Windows");
      Console.WriteLine("Нажмите клавишу для продолжения...");
      Console.ReadLine();
    }

    // Запуск службы
    public static void StartService(string serviceName)
    {
      ServiceController service = new ServiceController(serviceName);
      // Проверяем не запущена ли служба
      if (service.Status != ServiceControllerStatus.Running)
      {
        // Запускаем службу
        service.Start();
        // В течении минуты ждём статус от службы
        service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromMinutes(1));
        Console.WriteLine("Служба была успешно запущена!");
      }
      else
      {
        Console.WriteLine("Служба уже запущена!");
      }
    }

    // Останавливаем службу
    public static void StopService(string serviceName)
    {
      ServiceController service = new ServiceController(serviceName);
      // Если служба не остановлена
      if (service.Status != ServiceControllerStatus.Stopped)
      {
        // Останавливаем службу
        service.Stop();
        service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromMinutes(1));
        Console.WriteLine("Служба была успешно остановлена!");
      }
      else
      {
        Console.WriteLine("Служба уже остановлена!");
      }
    }

    // Перезапуск службы
    public static void RestartService(string serviceName)
    {
      ServiceController service = new ServiceController(serviceName);
      TimeSpan timeout = TimeSpan.FromMinutes(1);
      if (service.Status != ServiceControllerStatus.Stopped)
      {
        Console.WriteLine("Перезапуск службы. Останавливаем службу...");
        // Останавливаем службу
        service.Stop();
        service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
        Console.WriteLine("Служба была успешно остановлена!");
      }
      if (service.Status != ServiceControllerStatus.Running)
      {
        Console.WriteLine("Перезапуск службы. Запускаем службу...");
        // Запускаем службу
        service.Start();
        service.WaitForStatus(ServiceControllerStatus.Running, timeout);
        Console.WriteLine("Служба была успешно запущена!");
      }
    }
  }
}

В данной небольшой статье вы научились управлять службами Windows на C#.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *