"Доступ запрещен" (0x80070005) при выполнении запланированных задач в Windows Server 2019

Я только что настроил новый экземпляр Windows Server 2019 и пытаюсь запускать задачи (консольные приложения C#) через планировщик задач Windows. Я настроил его для входа в систему как определенный пользователь Windows, который имеет разрешение "Администраторы". Однако, когда я пытаюсь запустить задачу (либо по расписанию, либо войдя в систему и запустив ее по требованию), выдает ошибку:

"Доступ запрещен" с кодом ошибки 0x80070005. Вещи, которые я пробовал до сих пор:

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

Ничего не помогло... Мне интересно, сталкивались ли другие с этой проблемой в Windows Server 2019 и как они запускали запланированные задачи?

3 ответа

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

В Windows 7 SP1 я столкнулся с такой же проблемой. Ничего не получалось.
Я нашел обходной путь:
1) В Task Scheduler экспортировать задачу (в.xml).
2) Удалить задачу в планировщике задач.
3) Отредактируйте.xml-файл:
3.1) Во второй строке заменить

Task version="1.2"
в
Task version="1.3"

3.2) Заменить строку
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
в
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
Или добавить строку
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
после строки
  <Settings>
если строка
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
отсутствует.
4) Импортировать.xml-файл в планировщик задач.
Теперь задача выполняется.
Я нашел этот обходной путь, когда заметил, что встроенные задачи Windows работают нормально.

У меня была аналогичная проблема при попытке создать запланированную задачу в Powershell для копирования файлов на подключенный диск.

Ниже были мои запланированные команды задач :

      $TaskName = "FileSync"
$Description = "This task will run periodically to sync .fin files from a specified source directory to a specified destination directory"
$ScriptPath = "C:\Users\my_userDesktop\file_sync.ps1"
$UserAccount = "COMP1\my_user"
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -File $ScriptPath"
$Principal = New-ScheduledTaskPrincipal -UserID $UserAccount -LogonType ServiceAccount -RunLevel Highest
$Trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([System.TimeSpan]::MaxValue)
Register-ScheduledTask -TaskName $TaskName -Action $Action -Description $Description -Trigger $Trigger -Principal $Principal

Однако при запуске команды я получал следующую ошибку:

      Register-ScheduledTask : Access is denied.
At line:1 char:1
+ Register-ScheduledTask -TaskName $TaskName -Action $Action -Description $Descrip ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (PS_ScheduledTask:Root/Microsoft/...S_ScheduledTask) [Register-Schedul
   edTask], CimException
    + FullyQualifiedErrorId : HRESULT 0x80070005,Register-ScheduledTask

Вот как я это исправил :

Причиной проблемы была команда в:

      $Principal = New-ScheduledTaskPrincipal -UserID $UserAccount -LogonType ServiceAccount -RunLevel Highest

-RunLevel Highest регистрирует запланированную задачу, которая выполняется под вошедшими в систему членами группы пользователей «Администраторы» с наивысшими привилегиями.

Это означает, что когда вы устанавливаете -RunLevel к Highestдля этого требуется, чтобы вы запланировали задание Powershell от имени администратора, то есть вы должны запустить Powershell от имени администратора, чтобы запланировать задание, а не просто запускать / запускать Powershell и обычный пользователь, чтобы запланировать задание.

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

Вот и все.

надеюсь, это поможет

Другие вопросы по тегам