Планировщик задач не может открыть командный файл, если он установлен для запуска независимо от того, вошел ли пользователь в систему или нет

ОС: Windows Server 2008 R2 Enterprise

Я не могу заставить Task Scheduler запускать файлы .bat, пока я выхожу из системы. У меня есть файл .bat для производства, который я хочу использовать, но для устранения неполадок я использую C:\Users\Administrator\Desktop\test.bat

test.bat очень прост. Все, что он содержит: taskkill/im notepad.exe

Он работает сам по себе. Если у меня открыт Блокнот, и я дважды щелкнув test.bat, тогда окно cmd начнет мигать, а "Блокнот" умрет. Файл .bat не является проблемой.

Задача, которую я создал в Планировщике задач, - "Test taskkill" (без кавычек). Я вижу его местоположение в проводнике Windows: C:\Windows\System32\Tasks\Test taskkill

Если задача установлена ​​для запуска только при входе пользователя в систему, то задача работает. С помощью этого параметра я могу щелкнуть правой кнопкой мыши по нему > запустить, и я получаю такое же поведение, как если бы я дважды щелкнул файл .bat. Это означает, что задача настроена правильно.

Если я установил его для запуска независимо от того, зарегистрирован ли пользователь, тогда, когда я нажимаю правой кнопкой мыши > запускать, ничего не происходит. Работа, как сообщается, была успешно запущена в истории, но Блокнот выживает. Я знаю, что я использую правильные учетные данные для учетной записи, которую я настраиваю для запуска задачи. Эта учетная запись является локальным администратором.

Эта проблема аналогична тем, что были в прошлом:

Запуск .bat файла в запланированной задаче

http://social.technet.microsoft.com/Forums/windowsserver/en-US/d47d116e-10b9-44f0-9a30-7406c86c2fbe/scheduled-task-wont-run-bat-file?forum=winservermanager

Поток во второй ссылке, по-видимому, разрешил идентичную проблему для многих людей с предположением, что учетная запись, используемая для запуска задачи, требует явного разрешения для файла .bat и всех файлов, которые модифицируется .bat файл. Это было очень многообещающим (если это раздражающее требование). Тем не менее, я подтвердил или назначил явные разрешения для локального администратора в следующих областях, и я все еще не удался:

  • C:\Users\Administrator\Desktop\
  • C:\Users\Administrator\Desktop\test.bat
  • C:\Windows\System32\Tasks\
  • C:\Windows\System32\Tasks\Test taskkill

Кроме того, я подтвердил, что учетная запись локального администратора находится в локальной группе администраторов.

Мне не хватает некоторых других разрешений, которые необходимо установить? Есть ли что-то еще, на что я должен смотреть? Спасибо!

Ответ 1

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

В окне свойств задачи на вкладке "Действие" при создании или редактировании действия, которое открывает пакетный файл (в моем случае test.bat), есть поле "Program/ script:" , и там также является полем "Начало в (необязательном):". Раньше у меня было поле "Program/script:" , содержащее полный путь к файлу, заканчивающийся именем файла, и у меня было поле "Start in (optional):" null. Эта конфигурация работает без проблем, если для задачи задано значение "Выполнять только при входе пользователя" на вкладке "Общие" в окне свойств задачи. Однако эта конфигурация не работает, если для задачи задано значение "Запустить, был ли пользователь включен или нет".

Чтобы решить проблему, я изменил действие так, чтобы поле "Program/ script:" содержало только имя файла, а не путь к файлу. Я помещаю путь к файлу в поле "Начать (необязательно):". Эта конфигурация работает, если для задачи задано значение "Выполнять только при входе пользователя"! Я тестировал с задачей, запущенной на триггере, а также с ее запуском вручную.

Ответ 2

У меня была схожая проблема, но она была связана с тем, что на пути к исполняемому файлу был пробел. Я удалил пространство, и теперь он отлично работает.

Ответ 3

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

Я использовал сетевое использование Z:\имя_компьютера\папка/постоянное: yes

то xxcopy/s/c/d/e/i/y D: *. * z:\BackupBat

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

Ответ 4

Для меня работало следующее:

1) "Запуск, если пользователь не вошел в систему" ​​в Планировщике задач не работает для программ, которые являются интерактивными. Пример блокнота, часы. Задачи не будут выполняться в интерактивном режиме. Убедитесь, что ваша программа не требует интерактивных действий.

2) Установите флажок "Начать (необязательно)". Если ваш путь к программе не является одним из системных путей. Вам лучше добавить в него свой программный путь. В "Program/ Script" введите только имя программы и введите путь к вашему script в "Start on".

3) Учетная запись пользователя, настроенная для вашей программы, должна иметь разрешение не только на запуск самой программы, но и на выполнение всех других программ, связанных с вашей программой.

Вот пример программы:

В C:\myprogram\folderOne\test.cmd

date /t >> c:\Temp\testAuto.log
date /t >> c:\temp\testAuto.log
echo ----->> c:\temp\testAuto.log
cls
exit

-Создание задач, выбрав "Общие" > "SecurityOptions" "Запустить, включен ли пользователь или нет" -Включить действие > Программа /script: test.cmd  на "Начать" C:\myprogram\folderOne -Run, вы можете видеть, что окна cmd открываются и закрываются очень быстро. Файл testAuto.log должен находиться в папке c:\tmp.

Ответ 5

Не уверен, что это помогает. Моя проблема заключалась в использовании интерактивной программы (в частности, Excel).

Создание двух пустых папок (Desktop) разрешило это. Создайте оба, даже если вы работаете на x64.

C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop

Я отлаживал свой код и реализовал код, выходящий в этой строке

ExcelFile excelFile = new ExcelFile(directory, filename);

Я прочитал это решение где-то, и теперь я не могу найти URL.

Ответ 6

Возможно, это связано с тем, что у вас нет разрешения. M сталкивается с той же проблемой, и я нашел решение, подобное этому, Щелкните правой кнопкой мыши на своей задаче, чем свойства. В свойствах нажмите вкладку "Общие", а затем нажмите "Группа пользователей или пользователя" и выберите подходящего пользователя.