Вопрос или проблема
Я создаю Запланированную задачу, настроенную через PowerShell с помощью XML:
$LogonTask_xml = @"
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>$(get-date -Format yyyy-MM-ddTHH:mm:ss.00000)</Date>
<Author>Interactive</Author>
<Description>$LogonDescription</Description>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<Enabled>true</Enabled>
<Delay>PT1H</Delay>
<ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<GroupId>S-1-5-32-545</GroupId>
<RunLevel>LeastPrivilege</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>StopExisting</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>true</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>$VBScriptPath</Command>
</Exec>
</Actions>
</Task>
"@
Я хочу, чтобы все пользователи запускали задачу в своем собственном контексте — но не могли ее изменять — и когда они тестируют ее, продолжают сталкиваться с сообщением “Учетная запись пользователя не имеет разрешений для запуска этой задачи”.
Как вы можете видеть, задача запускается от имени группы Users
, и разрешено запускать по требованию. Задача работает нормально, если я запускаю ее как администратор. Группа “users” может видеть эту конкретную задачу и имеет права на чтение и выполнение файла задачи (в c:\Windows\System32\Tasks), а пользователи могут создавать другие задачи и запускать их. Я бы поклялся, что раньше это работало.
Когда я создал другую задачу и манипулировал ACL, чтобы они полностью соответствовали “проблемной” задаче, вторая задача все еще выполняется по запросу пользователя без проблем.
Должно быть что-то еще, что может помешать непривилегированным пользователям выполнять некоторые задачи, но я не могу понять, что именно. Помощь!
На случай, если кто-то наткнется на это в будущем, вот ответ…
В какой-то момент Microsoft перестала использовать файлы задач в C:\Windows\System32\Tasks
для управления безопасностью запланированных задач. Утверждается, что это произошло с Win10, но это не могло быть в ранних версиях Win10, потому что моя проблема не возникала до более поздних выпусков.
Тем не менее, возможность выполнять запланированные задачи теперь контролируется через настройки реестра в разделе HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
, но эти ключи защищены от “обычных” администраторов. Я нашел код для добавления разрешений здесь, и привел его в порядок в что-то, что я буду использовать, чтобы позволить любой задаче выполняться любым пользователем.
Надеюсь, это кому-то поможет.
Ответ или решение
Проблема с возникающим сообщением "Учетная запись пользователя не имеет разрешения на выполнение этой задачи" является распространенной в Windows среде при настройке задач с помощью Планировщика Задач. Для понимания причины этой ошибки необходимо рассмотреть несколько факторов: настройки безопасности, используемый XML для создания задачи, а также изменения в управлении правами доступа к задачам, которые были внесены в более последних версиях Windows.
Теория
Главная причина, по которой пользователи могут сталкиваться с проблемой отсутствия разрешений, часто связана с изменениями в управлении безопасностью, введенными в новых версиях Windows. Начиная с Windows 10, использование файлов в «C:\Windows\System32\Tasks» для контроля за безопасностью задач прекратилось. Вместо этого управление правами доступа к задачам теперь осуществляется через реестр, в частности, в ветке HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
. Доступ к этим ключам реестра ограничен даже для обычных администраторов.
Пример
Рассмотрим задачу, которая была создана посредством PowerShell, используя XML-конфигурацию. В данном случае, задача настроена запускаться от группы «Users» с наименьшим уровнем привилегий. В то время как администраторы могут успешно запускать задачу, обычные пользователи сталкиваются с ограничением, хотя имеют права на чтение и выполнение файлов задать и могут создавать и выполнять другие задачи.
XML-конфигурация задачи, как указано, содержит следующие элементы:
- Принципы (Principals): в XML-файле указано, что задачей управляет группа с
GroupId
, равнымS-1-5-32-545
, что соответствует группе «Users». - Уровень привилегий (RunLevel): задан на уровне
LeastPrivilege
, что минимизирует права во время выполнения задачи. - Действия (Actions): исполняет скрипт, указанный в переменной
$VBScriptPath
.
Несмотря на настройки, предоставляющие права на запуск в контексте пользователя, задача не выполняется, что говорит о проблемах с управлением правами доступа на уровне реестра.
Применение
Чтобы решить эту проблему и обеспечить возможность выполнения задачи пользователями, необходимо внести изменения в настройки реестра, что даст доступ группе "Users" к исполнения данной задачи. Вот некоторые шаги, которые можно предпринять:
-
Проверка настроек задач: Убедитесь, что задан правильный XML и все необходимые права предоставлены в интерфейсе Планировщика задач.
-
Модификация реестра: Внесение изменений в ключи реестра. Это можно сделать скриптами PowerShell или с помощью сторонних инструментов:
- Используйте скрипт из общедоступных ресурсов, таких как репозиторий GitHub, для автоматизации установки правильных разрешений.
-
Безопасность и аудит: Проверьте права пользователей в
Task Scheduler
и просмотрите журнал безопасности для выявления неопознанных проблем. -
Тестирование: Проверьте корректность исполнения задачи после внесения всех изменений. Убедитесь, что пользователи могут запускать задачу без ошибок о недостаточности прав.
Заключение
Ошибка запуска задачи из-за «недостаточных разрешений» важна, так как она подчеркивает необходимость понимания изменений в системе безопасности Windows и требует администрирования на более глубоком уровне. Решение проблемы может потребовать модификаций в реестре и осознание системных изменений, которые рассчитаны на улучшение безопасности при выполнении задач. Учитывая информацию об использовании реестра для управления заданиями, ИТ-специалисты могут эффективно настроить задачи для пользователей, избегая распространенных ошибок с правами доступа.