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

Изящно завершить запуск консольного приложения через планировщик задач

Я запускаю консольное приложение в Windows Server 2008. Я хочу, чтобы оно всегда запускалось, поэтому я запланировал его запуск при запуске через планировщик задач. Я настроил задачу, чтобы она не требовала входа в систему.

Как это остановить? В планировщике заданий есть кнопка «Завершить задание» под «Все запущенные задания». Но это резко остановит задачу, чего я не хочу делать. Я запрограммировал его так, что CTRL-C будет выдавать запрос на остановку, и он остановится, когда сделает то, что делает. (Для любых разработчиков .NET я использую событие Console.CancelKeyPress.)

Есть ли способ вызвать событие нажатия клавиши отмены (например, CTRL-C) в моем приложении, когда оно запускалось из планировщика задач?

(Я знаю, что один ответ - сделать это службой Windows, что я в конечном итоге и сделаю, но мне нужно краткосрочное решение.)

А пока вы можете сделать это сервисом, используя srvany утилита. это сделать очень быстро и легко. Я обнаружил, что когда служба остановлена, srvany отправляет ctrl-c в консольное приложение.

  1. Сделайте сервис с помощью srvany и sc:

    sc create myservice binpath = "c: \ path to \ srvany.exe"

  2. откройте regedit и найдите свою службу в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \

  3. щелкните правой кнопкой мыши и добавьте ключ под названием Параметры

  4. Создайте строковое значение с именем Application и задайте в нем путь к консольному приложению.

Вот и все.

Я не знаю, работает ли srvany с 2008 годом (мой поиск в Google предполагает, что это так). Я нашел это, но я знаю, что он отлично работает с 2003 годом. Вы можете получить его из Комплект ресурсов Windows 2003.

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