Назад | Перейти на главную страницу

Приложение, которое ДОЛЖНО оставаться активным

Мне нужен способ заставить мое приложение (с именем сторожевой таймер) оставаться работоспособным, даже если я закрываю его намеренно. Это приложение одновременно проверяет активность двух других приложений (вспомогательное управление и передача данных). Каждый раз, когда одно из этих двух приложений закрывается, сторожевой таймер готов снова запустить его. Но когда сторожевой таймер не работает, никто больше не работает. Как я могу это сделать? Есть ли служба Windows, которая может справиться с этой задачей?

Спасибо за вашу помощь!


Всем спасибо, ребята!

После многих проб и ошибок я наконец смог получить свое сторожевое приложение, обеспечивающее постоянный контроль над работой приложений Windows «Контроль помощи» и «Передача данных». На самом деле не имело смысла иметь два приложения Windows, управляемых третьим приложением Windows, в основном из-за их собственной природы - они существуют для обеспечения взаимодействия, поэтому для кого-то нормально остановить сторожевого пса, когда он захочет. Это естественный путь. Приняв во внимание предложение Саймона, я решил передать управление на новый уровень, разработав свой сторожевой таймер как службу Windows. Я знаю, что это может быть не лучший способ, поскольку сама служба взаимодействует с приложениями на основе графического интерфейса, что не рекомендуется. Я установил свою сторожевую службу, чтобы разрешить взаимодействие с рабочим столом, и теперь ничто не мешает ей оставаться в живых, если, конечно, средний пользователь не остановит службу.

Если кому-то когда-нибудь понадобится такой постоянный контроль, я думаю, это может быть четко определенное и ясное решение.

Диспетчер управления службами Windows может перезапустить службу, если она неожиданно закрывается, но он не перезапускает службу, поскольку служба остановлена ​​в ответ на управляющее сообщение «Стоп». В случае непредвиденных событий (например, необработанного исключения) эта функция может автоматически перезапустить вашу программу. Однако это не поможет, если служба будет остановлена ​​пользователем намеренно.

Похоже, вы могли бы написать «Watchdog Watchdog», но тогда вам понадобится «Watchdog Watchdog Watchdog». В какой-то момент вам просто нужно сдаться и предположить, что ваше программное обеспечение может быть остановлено, если кто-то этого захочет.

Вы можете использовать «Запланированное задание», чтобы периодически проверять, работает ли ваша сторожевая программа, и перезапускать ее.

Немного выдумка, но если ваше «сторожевое» приложение является собственной службой, вы можете заставить его регистрировать событие в журнале событий, когда SCM просит его остановиться. Затем вы можете настроить триггер события (см. EventTriggers.exe), который перезапускает службу.

Судя по вашему описанию, вам также нужна система мониторинга. Мы делаем это - у нас есть несколько сценариев сторожевого таймера, у нас есть один сценарий topdog, который отслеживает, что все перечисленные сторожевые таймеры работают - и у нас есть проверка HPOV каждые 4 часа, чтобы убедиться, что topdog работает. Если это не так, мы получаем предупреждение.

Изменить - HPOV - это внешняя система мониторинга, если вы не знали. Чтобы получить такой уровень надежности и мониторинга, вам необходим мониторинг, который осуществляется извне бизнес-систем.