Я запускаю консольное приложение в Windows Server 2008. Я хочу, чтобы оно всегда запускалось, поэтому я запланировал его запуск при запуске через планировщик задач. Я настроил задачу, чтобы она не требовала входа в систему.
Как это остановить? В планировщике заданий есть кнопка «Завершить задание» под «Все запущенные задания». Но это резко остановит задачу, чего я не хочу делать. Я запрограммировал его так, что CTRL-C будет выдавать запрос на остановку, и он остановится, когда сделает то, что делает. (Для любых разработчиков .NET я использую событие Console.CancelKeyPress.)
Есть ли способ вызвать событие нажатия клавиши отмены (например, CTRL-C) в моем приложении, когда оно запускалось из планировщика задач?
(Я знаю, что один ответ - сделать это службой Windows, что я в конечном итоге и сделаю, но мне нужно краткосрочное решение.)
А пока вы можете сделать это сервисом, используя srvany утилита. это сделать очень быстро и легко. Я обнаружил, что когда служба остановлена, srvany отправляет ctrl-c в консольное приложение.
Сделайте сервис с помощью srvany и sc:
sc create myservice binpath = "c: \ path to \ srvany.exe"
откройте regedit и найдите свою службу в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \
щелкните правой кнопкой мыши и добавьте ключ под названием Параметры
Создайте строковое значение с именем Application и задайте в нем путь к консольному приложению.
Вот и все.
Я не знаю, работает ли srvany с 2008 годом (мой поиск в Google предполагает, что это так). Я нашел это, но я знаю, что он отлично работает с 2003 годом. Вы можете получить его из Комплект ресурсов Windows 2003.
Все, что вам нужно сделать, это сделать запланированные задачи для запуска и остановки службы.