К сожалению программам иногда свойственно зависать или падать, особенно если они работают круглосуточно. Не является исключением и наша программа вывода видео на табло - AdvertisePro. Чтобы сделать нашу жизнь чуточку проще :) - я написал службу, которая следит за тем, чтобы наша программа всегда была запущена и по возможности определяет, что программа продолжает трудится и не отлынивает зависнув. Необходимо уточнить, что программа будет запущенна сразу после входа пользователя в систему (имя пользователя можно указать). Поэтому может понадобиться настройка системы на автологон при рестарте или запуске компьютера. Также наша служба может следить и за некоторыми другими службами, которые нужны для программы - первый кандидат служба 
Перед установкой убедитесь, что установлен .NET Framework 2.0, скачайте файл msi и установите его. После установки служба
Теперь подробнее про файл 
Открываем его текстовым редактором и находим нужный нам раздел.
Красным подчеркнут полный путь к наше программе, зеленым выделено пустое значение, а синим показан элемент списка названий служб, за которыми нам надо следить, просто добавьте такую же строчку, поменяв название службы, если необходимо следить еще за какой-нибудь службой. Временной интервал задается в формате ЧЧ:ММ:СС. Теперь описания каждого параметра:
Служба
nibus. Итак, встречайте AdvertisePro Guard (APGuard)Перед установкой убедитесь, что установлен .NET Framework 2.0, скачайте файл msi и установите его. После установки служба
APGuard будет автоматически запускаться после рестарта, поэтому необходимо внести все настройки в конфигурационный файл APGuard.exe.config расположенном в папке с установленной программой. Рекомендую сделать резервную копию перед внесением изменений. После внесения изменений можно запустить службу командой net start apguard.
Теперь подробнее про файл APGuard.exe.config.
Открываем его текстовым редактором и находим нужный нам раздел.Красным подчеркнут полный путь к наше программе, зеленым выделено пустое значение, а синим показан элемент списка названий служб, за которыми нам надо следить, просто добавьте такую же строчку, поменяв название службы, если необходимо следить еще за какой-нибудь службой. Временной интервал задается в формате ЧЧ:ММ:СС. Теперь описания каждого параметра:
- AdvertiseProFile- полный путь к программе.
- WorkingDir- рабочая папка. Если не задана, то папка с программой.
- GuardTimerInterval- интервал проверки работоспособности, здесь каждые 10 сек.
- CommandLineArgs- параметры для запуска программы.
- WatchIpgm- проверять зависший- ipgm.exe(если вы не знаете для чего это - оставьте).
- IpgmMaxDuration- время в течении которого ожидается завершение выполнения- ipgm.exe.
- WatchApplication- выполнять наблюдение (True/False).
- UserName- имя пользователя, при входе которого будет начато наблюдение и запущена программа. Если не указано, то для любого.
- AppMoniker- название префикса моникера для нахождения запущенного экземпляра программы. Задается в файле конфигурации- AdvertisePro.cfg, пример:- <process priority="default" autonomous="false" debug_level="0" moniker="AdvertisePro:"></process>. Необязательный параметр. В случае задания позволяет лучше определить работоспособность программы AdvertisePro.
- ShedulerName- имя компонента Планировщик (см. статьи про Планировщик и компоненты). Необязательный параметр. В случае задания позволяет лучше определить работоспособность программы AdvertisePro. Работает при указании- AppMoniker.
- RestartDelay- задержка при перезапуске программы. Необходима, так как при быстром рестарте предыдущий экземпляр программы не успевает выгрузиться и блокирует новый.
- WatchedServices- список служб для наблюдения.
net start apguard. Если вы все указали правильно, то программа должна запуститься.Служба
APGuard хранит файл с журналом сообщений в папке .\logs в которую у нее должен быть доступ (касается особенно для систем Vista+ с активным UAC).