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

Запланированные задачи Windows server 2012 запускаются с использованием профиля по умолчанию (при запуске без сеанса), даже если указана конкретная учетная запись

Как указано в http://social.technet.microsoft.com/Forums/windowsserver/en-US/5e6dc56d-9069-42e3-a7e3-87437cf8ed81/scheduled-tasks-run-in-the-default-user-profile (Пока нет ответа от Microsoft)

У меня такая же проблема. Запланированная задача, которую мы использовали для идеального выполнения в Windows Server 2008R2, не выполняется в Windows Server 2012. Исполняемый файл этой задачи зависит от папок пользовательской среды.

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

Кто-нибудь знает, как это исправить?

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

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

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

Вы можете запустить другую интерактивную задачу за минуту или две до своей задачи, что даст Windows время для загрузки правильного профиля, или запустить задачу через пакетный файл.

set "USERPROFILE=%USERPROFILE%\..\%USERNAME%"
set "APPDATA=%USERPROFILE%\AppData\Roaming"
set "LOCALAPPDATA=%USERPROFILE%\AppData\Local"
"%~dp0\YOUREXEHERE.exe"

Скопируйте его в пакетный файл и поместите в тот же каталог, что и исполняемый файл, который вы хотите запустить. Затем измените YOUREXEHERE на имя EXE. Больше ничего не меняйте в скрипте и сохраните.

Затем запустите пакет как запланированную задачу вместо EXE. Какой бы пользователь ни запустил задачу, приложение будет использовать его профиль.

Похоже, исправление доступно здесь: https://support.microsoft.com/en-us/kb/3133689

Однако, поскольку мне нужно запланировать перезагрузку сервера для применения этого исправления, я использовал решение, предоставленное выше @ brian-d, и оно сработало для меня.