Задать вопрос

[Windows] Автоматический перезапуск программы после сбоя

Есть одна небольшая, но нужная программа для Windows, которая имеет тенденцию периодически помирать без видимых причин.

Нужна софтина, которая умеет мониторить наличие запущенного процесса, и при его отсутствии через определённое время запускать его заново.

Windows XP, если это имеет значение.
  • Вопрос задан
  • 23505 просмотров
Подписаться 9 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
@rinx
Добрый день,
Ваша программа может быть зарегистрирована в системе как сервис?
Если да, то вкладка «Recovery» в свойствах сервиса вам поможет:
mdenomy.wordpress.com/2008/02/28/using-the-automatic-recovery-features-of-windows-services/
Ответ написан
Комментировать
Второй вариант — в sheduled task создать задачу с этим приложением, выполняться каждую минуту, duration по максимуму, не завершать в случае, если задача еще выполняется.
Ответ написан
Комментировать
Killy
@Killy
Application Monitor или Keep Running, например. (Если именно софтина, а не скрипт :)
Ответ написан
Комментировать
@zuzuzu
Профессиональный бездельник
pslist.exe -e "процесс"
if %errorlevel%==1 start "" "программа"

pslist входит в состав pstools, качается с майкрософтофского технета
Ответ написан
strib
@strib
Если не запускается как служба.
«и при его отсутствии через определённое время» — это сколько?
1) Минуты — WSH в помощь, определить наличие процесса в выводе tasklist и запустить его. В качестве расписания использовать стандартный планировщик. Мануалов в сети куча
2) Секунды — то или искать готовый watchdog, или писать самому. Тоже проблемы особой нет.
Ответ написан
Код На vbscript слепленный из 2 примеров:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Notepad.exe'")
For Each objProcess in colProcesses
Wscript.quit
Next

Error = objWMIService.Create("notepad.exe", null, null, intProcessID)
If Error = 0 Then
Wscript.Echo "Notepad was started with a process ID of " _
& intProcessID & "."
Else
Wscript.Echo "Notepad could not be started due to error " & _
Error & "."
End If
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы