Перезапустите службу Windows из службы - PullRequest
0 голосов
/ 06 декабря 2009

Есть ли способ перезапустить службу Windows из той же службы, что и Application.Restart () в формах Windows, я не хочу запускать другой процесс из службы для перезапуска службы.

Ответы [ 2 ]

1 голос
/ 10 декабря 2009

Я разработчик платформы хостинга Windows с открытым исходным кодом, которая называется Daemoniq. Настройка параметров восстановления службы является одной из его функций. Вы можете скачать его с http://daemoniq.org

Текущие функции включают в себя:

  • расположение службы, независимой от контейнера, через CommonServiceLocator
  • установить общие свойства службы, такие как serviceName, displayName, description и serviceStartMode, через app.config
  • запуск нескольких служб Windows в одном процессе
  • установка параметров восстановления через app.config
  • набор служб зависит от app.config
  • установить учетные данные процесса службы через командную строку
  • установка, удаление, отладка служб через командную строку

Спасибо!

0 голосов
/ 14 июня 2015

Вы также можете добавить Custom Action в папку Commit пользовательских действий в вашем проекте установки. Это должен быть основной вывод проекта библиотеки классов с классом, унаследованным от System.Configuration.Install.Installer с атрибутом [RunInstaller (true)]. В этом классе вам нужно переопределить один базовый метод:

    public override void Commit(IDictionary savedState)
    {
        base.Commit(savedState);
        ProcessStartInfo psi = new ProcessStartInfo("sc", "failure \"You service name\" reset= 60 actions= restart/1000");
        psi.CreateNoWindow = true;
        Process proc = Process.Start(psi);
        proc.WaitForExit();
    }

Это настройка вашего сервиса для автоматического перезапуска после сбоя.

Чем когда вам нужно перезапустить сервис, вы можете сделать

Environment.FailFast("Self restarting service...");

Но у него есть один недостаток - в журнале событий будет выдано сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...