EXE не выполняется из задачи расписания
Мой EXE работает отлично, когда я запускаю его двойным щелчком по нему, но он не запускается, когда я пытаюсь запустить его с помощью Schedule Task.
Я запускаю задачу расписания на локальной машине в качестве администратора. Я уже установил следующие параметры в "Параметры безопасности" задачи "Расписание".
Запускать только когда пользователь вошел в систему (я вошел в систему, когда запускается задача расписания)
Флажок Запуск с наивысшими привилегиями установлен
3 ответа
В моем случае это не сработало из-за запуска в месте расположения программы. Задайте в свойствах [Начать в] (необязательно) запланированной задачи путь, по которому существует исполняемый файл.
Значение по умолчанию [Начать в] - C:/Windows/System32.
В зависимости от того, на какой ОС Windows вы работаете, ваш EXE-файл может фактически запускаться и работать в фоновом режиме, при этом пользовательский интерфейс полностью скрыт. В зависимости от того, какой EXE-файл вы пытаетесь запустить, он может находиться там, скрытно, ожидая ввода пользователя, который он никогда не получит. Если ваш EXE не требует ввода данных пользователем (что-то, что просто запускается, а затем закрывается, когда завершается), тогда вы можете просто проверить, действительно ли задание выполнено.
Уловка, которую я использовал для проверки этого, заключается в создании небольшой пакетной программы, например:
@echo off
echo myEXE Scheduled Task Started %DATE% %TIME% >>c:\myEXE.log
myEXE.exe
echo myEXE Scheduled Task Completed %DATE% %TIME% >>c:\myEXE.log
Пусть ваша запланированная задача вызывает этот пакетный скрипт вместо myEXE напрямую. Это сгенерирует текстовый файл (myEXE.log), который вы можете проверить, чтобы проверить, когда запускается запланированное задание, а затем, когда (и был ли) завершен EXE-файл.
Просто для удовольствия (и для проверки того, о чем я говорю) вы можете добавить эти строки в конце пакетного скрипта.
pause
echo Batch Script Finished %DATE% %TIME% >>c:\myEXE.log
Если вы никогда не увидите окно cmd, ожидающее вас Press any key to continue...
тогда вы также никогда не увидите последнюю строку в вашем лог-файле (myEXE.log)
Планировщик заданий Windows — странная программа. На самом деле это не CRON-подобный планировщик задач, и это не программа на основе Quartz, за исключением того, что она полагается на внутренние часы system.datetime, которые, как известно, имеют свои собственные « проблемы ».
Тем не менее, иногда он может спотыкаться (недоказано, но из личных наблюдений), когда речь идет о разрешениях задачи и о том, кто ее создал и какая учетная запись используется для ее запуска.
Я обнаружил, что следующие шаги дают мне «чистое» расписание задачи каждый раз, и задача запускается каждый раз:
- Всегда запускайте планировщик заданий от имени администратора. Если у вас нет прав администратора для этого, то вы должны быть здесь!
- Не создавайте простую задачу. Перейдите прямо к «Создать задачу» и под своей учетной записью администратора (не обязательно быть богом-администратором!).
- При заполнении мастера задач не указывайте триггер, ПОКА вы сначала не протестировали задачу. Кроме того, убедитесь, что вы разрешили запуск задачи независимо от того, вошли вы в систему или нет! Это ловит меня иногда.
- Пока не беспокойтесь о настройках. Принять значение по умолчанию
- Сохранить/ОК
- Закрыть планировщик заданий
- Перезапустите его снова и снова от имени администратора.
- Запустите созданную вами задачу.
- Если все пойдет хорошо, он побежал! Выполните CMD-запуск EXE-файла, используя предложение @Wes, чтобы быть уверенным.
- Теперь поместите триггер по вашему выбору
- Измените Учетную запись на соответствующую учетную запись администратора задач или общую учетную запись с правами администратора, специально созданную для выполнения задач. Мы называем нашу admin.tasks
- Сохраните все, и вы должны быть в порядке отсюда.