EXE не выполняется из задачи расписания

Мой EXE работает отлично, когда я запускаю его двойным щелчком по нему, но он не запускается, когда я пытаюсь запустить его с помощью Schedule Task.

Я запускаю задачу расписания на локальной машине в качестве администратора. Я уже установил следующие параметры в "Параметры безопасности" задачи "Расписание".

  1. Запускать только когда пользователь вошел в систему (я вошел в систему, когда запускается задача расписания)

  2. Флажок Запуск с наивысшими привилегиями установлен

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
  • Сохраните все, и вы должны быть в порядке отсюда.
Другие вопросы по тегам