Мне нужен способ заставить мое приложение (с именем сторожевой таймер) оставаться работоспособным, даже если я закрываю его намеренно. Это приложение одновременно проверяет активность двух других приложений (вспомогательное управление и передача данных). Каждый раз, когда одно из этих двух приложений закрывается, сторожевой таймер готов снова запустить его. Но когда сторожевой таймер не работает, никто больше не работает. Как я могу это сделать? Есть ли служба Windows, которая может справиться с этой задачей?
Спасибо за вашу помощь!
Всем спасибо, ребята!
После многих проб и ошибок я наконец смог получить свое сторожевое приложение, обеспечивающее постоянный контроль над работой приложений Windows «Контроль помощи» и «Передача данных». На самом деле не имело смысла иметь два приложения Windows, управляемых третьим приложением Windows, в основном из-за их собственной природы - они существуют для обеспечения взаимодействия, поэтому для кого-то нормально остановить сторожевого пса, когда он захочет. Это естественный путь. Приняв во внимание предложение Саймона, я решил передать управление на новый уровень, разработав свой сторожевой таймер как службу Windows. Я знаю, что это может быть не лучший способ, поскольку сама служба взаимодействует с приложениями на основе графического интерфейса, что не рекомендуется. Я установил свою сторожевую службу, чтобы разрешить взаимодействие с рабочим столом, и теперь ничто не мешает ей оставаться в живых, если, конечно, средний пользователь не остановит службу.
Если кому-то когда-нибудь понадобится такой постоянный контроль, я думаю, это может быть четко определенное и ясное решение.
Диспетчер управления службами Windows может перезапустить службу, если она неожиданно закрывается, но он не перезапускает службу, поскольку служба остановлена в ответ на управляющее сообщение «Стоп». В случае непредвиденных событий (например, необработанного исключения) эта функция может автоматически перезапустить вашу программу. Однако это не поможет, если служба будет остановлена пользователем намеренно.
Похоже, вы могли бы написать «Watchdog Watchdog», но тогда вам понадобится «Watchdog Watchdog Watchdog». В какой-то момент вам просто нужно сдаться и предположить, что ваше программное обеспечение может быть остановлено, если кто-то этого захочет.
Вы можете использовать «Запланированное задание», чтобы периодически проверять, работает ли ваша сторожевая программа, и перезапускать ее.
Немного выдумка, но если ваше «сторожевое» приложение является собственной службой, вы можете заставить его регистрировать событие в журнале событий, когда SCM просит его остановиться. Затем вы можете настроить триггер события (см. EventTriggers.exe), который перезапускает службу.
Судя по вашему описанию, вам также нужна система мониторинга. Мы делаем это - у нас есть несколько сценариев сторожевого таймера, у нас есть один сценарий topdog, который отслеживает, что все перечисленные сторожевые таймеры работают - и у нас есть проверка HPOV каждые 4 часа, чтобы убедиться, что topdog работает. Если это не так, мы получаем предупреждение.
Изменить - HPOV - это внешняя система мониторинга, если вы не знали. Чтобы получить такой уровень надежности и мониторинга, вам необходим мониторинг, который осуществляется извне бизнес-систем.