Удаленный сторожевой таймер C#

У нас есть ряд служб (в основном консольных приложений), работающих на нескольких удаленных компьютерах.

Мне нужно реализовать некоторую форму сторожевого таймера, чтобы убедиться, что все эти службы работают должным образом.

Некоторые службы выполняются через планировщик заданий Windows, а некоторые являются приложениями с длительным выполнением.

Каким будет лучший способ регистрации запуска этих приложений? Я не хочу изменять работающие службы.

У меня есть доступ администратора ко всем машинам.

На ум приходит несколько вариантов:

Для долго работающих приложений: используйте psexec и получите список запущенных процессов и убедитесь, что мое приложение есть в этом списке.

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

У вас есть другие идеи, как это сделать?

Для справки, это будет реализовано в C#/WPF.

ИЗМЕНИТЬ:

Хорошо, я решил это довольно простым способом. Спасибо за ваш вклад.

Источник: http://pastebin.com/fr6dDMp5


person alexn    schedule 11.11.2010    source источник


Ответы (3)


Вы видели Задачи WMI: Процесс? http://msdn.microsoft.com/en-us/library/aa394599%28VS.85%29.aspx

person shaans    schedule 11.11.2010
comment
Да, я думал об использовании WMI. Это также позволило бы мне получать запланированные задачи (если я правильно понимаю MSDN). - person alexn; 11.11.2010

Как я уже говорил в своем вопросе, я решил это довольно просто, используя Process.GetProcesses(string machineName), который может получать процессы на удаленной машине. Источник здесь: http://pastebin.com/fr6dDMp5

person alexn    schedule 21.12.2010

Рассматривали ли вы возможность использования службы XYNT ( http://www.codeproject.com/KB/system/xyntservice.aspx )?

Он может запускать ваши консольные приложения как службу Windows и перезапускать их, если они останавливаются. Вам не нужно изменять существующие службы.

person Dennis    schedule 11.11.2010