Открыть сервис

Task Scheduler 2.0

Task Scheduler 2.0 — это компонент операционных систем Microsoft Windows, начиная с Windows Vista и Windows Server 2008, выполняющий роль планировщика задач. Он пришёл на смену Task Scheduler 1.0, который использовался в более ранних версиях Windows (Windows 2000, Windows XP, Windows Server 2003). Task Scheduler 2.0 представляет собой полностью переработанную систему, основанную на новой архитектуре, использующей COM-интерфейсы, XML-формат для хранения задач и расширенный набор триггеров и условий запуска.

История и предпосылки

Планировщик задач в Windows впервые появился в Windows 95 (как часть Microsoft Plus! для Windows 95). В Windows 2000 и Windows XP он был представлен как служба с ограниченным функционалом (Task Scheduler 1.0). Задачи хранились в бинарном формате (.job), управление было возможно только через локальный интерфейс, а возможности по настройке условий запуска были минимальными.

С выходом Windows Vista компания Microsoft полностью переписала планировщик, создав Task Scheduler 2.0. Основными причинами стали:

  • Необходимость интеграции с новыми функциями ОС: такие механизмы, как автоматическое обслуживание системы (Maintenance), дефрагментация по расписанию, обновления Windows (Windows Update) и восстановление системы, требовали более гибкого и надёжного планировщика.
  • Улучшение безопасности и изоляции: новая архитектура позволила запускать задачи в контексте разных учётных записей, включая системную учётную запись (SYSTEM), с возможностью повышения привилегий.
  • Поддержка сложных сценариев: появилась возможность задавать множество триггеров (времён, событий, состояний системы) и условий, а также выполнять последовательности действий.

Архитектура и компоненты

Task Scheduler 2.0 состоит из нескольких ключевых компонентов, работающих как в пользовательском режиме, так и в режиме ядра.

Служба планировщика задач (Task Scheduler Service)

Это основная служба Windows (файл svchost.exe, исполняемый модуль taskschd.dll), которая отвечает за:

  • Чтение и интерпретацию XML-файлов задач из системной папки %SystemRoot%\System32\Tasks.
  • Мониторинг системных событий, времени, состояния системы и других триггеров.
  • Запуск задач в соответствии с заданными триггерами и условиями.
  • Управление очередью задач и их параллельным выполнением.
  • Ведение журнала событий планировщика (Event Log).

Служба запускается автоматически при старте системы и работает в фоновом режиме. Её состояние можно проверить через оснастку services.msc (имя службы: Schedule).

Хранилище задач (Task Folder)

Задачи хранятся в виде отдельных XML-файлов в папке %SystemRoot%\System32\Tasks. Каждый файл имеет расширение .xml и содержит полное описание задачи: триггеры, действия, условия, параметры безопасности, настройки питания и т.д. Структура папок внутри Tasks соответствует иерархии папок, отображаемой в графическом интерфейсе планировщика. Например, задачи, созданные пользователем, обычно находятся в папке \Tasks\Microsoft\Windows\....

COM-интерфейсы (API)

Task Scheduler 2.0 предоставляет набор COM-интерфейсов для программного управления задачами. Основные из них:

  • ITaskServiceточка входа для подключения к планировщику на локальном или удалённом компьютере.
  • ITaskFolder — представляет папку с задачами; позволяет создавать, удалять, перечислять задачи и вложенные папки.
  • ITaskDefinition — описывает полную конфигурацию задачи (триггеры, действия, принципалы, настройки).
  • ITrigger и его наследники (например, ITimeTrigger, IEventTrigger, ILogonTrigger) — задают условия запуска.
  • IAction и его наследники (например, IExecAction, IComHandlerAction, IEmailAction) — описывают действия, выполняемые при срабатывании триггера.

API доступен для использования в скриптах (VBScript, PowerShell) и в приложениях на C++, C#, Visual Basic .NET.

Основные возможности и отличия от версии 1.0

ХарактеристикаTask Scheduler 1.0 (Windows XP/2000)Task Scheduler 2.0 (Windows Vista и новее)
Формат хранения задачБинарный (.job)XML (.xml)
ТриггерыТолько по времени (однократно, ежедневно, еженедельно, ежемесячно)Время, события (Event Log), вход в систему, запуск системы, состояние простоя, блокировка/разблокировка рабочей станции, подключение/отключение от сети, изменение системного времени, создание/изменение файла и др.
Условия запускаМинимальные (только питание от сети)Мощные: питание от сети/батареи, состояние сети (подключено/отключено), состояние простоя (Idle), наличие/отсутствие пользователя, загрузка ЦП, свободное место на диске и др.
ДействияТолько запуск приложения/скриптаЗапуск приложения, отправка электронной почты (устарело), показ сообщения (устарело), запуск COM-обработчика
БезопасностьЗапуск от имени текущего пользователяЗапуск от имени любого пользователя (включая SYSTEM), с возможностью повышения привилегий (Run with highest privileges), изоляция задач, аутентификация через SID
УправлениеЧерез оснастку taskschd.msc (ограниченная)Расширенная оснастка taskschd.msc, командлеты PowerShell (Get-ScheduledTask, New-ScheduledTask, Register-ScheduledTask), COM-API
Удалённое управлениеОграниченное (через RPC)Полноценное через COM/DCOM, WinRM, PowerShell Remoting
ВерсионированиеНетПоддержка версий задач (Task Scheduler 2.0, 2.1, 2.2)

Типы триггеров

Task Scheduler 2.0 поддерживает следующие основные типы триггеров:

  1. TimeTrigger (Временной триггер): запуск по расписанию (однократно, ежедневно, еженедельно, ежемесячно, при запуске системы, при входе пользователя). Гибкая настройка повторения.
  2. EventTrigger (Событийный триггер): запуск при регистрации определённого события в системном журнале Event Log (например, ошибка диска, событие безопасности, событие приложения).
  3. LogonTrigger (Триггер входа в систему): запуск при входе любого или конкретного пользователя.
  4. BootTrigger (Триггер загрузки системы): запуск после завершения загрузки операционной системы.
  5. IdleTrigger (Триггер простоя): запуск, когда система переходит в состояние простоя (Idle) в течение заданного времени.
  6. SessionStateChangeTrigger (Триггер изменения состояния сеанса): запуск при блокировке, разблокировке рабочей станции, подключении или отключении удалённого рабочего стола (RDP).
  7. RegistrationTrigger (Триггер регистрации задачи): запуск сразу после создания или изменения задачи.
  8. CustomTrigger (Пользовательский триггер): позволяет создавать триггеры на основе XML-запросов к WMI (Windows Management Instrumentation).

Типы действий

Для каждой задачи можно задать одно или несколько действий, которые выполняются последовательно при срабатывании триггера. Основные типы:

  • ExecAction (Запуск программы): запуск исполняемого файла (.exe, .bat, .cmd, .ps1, .vbs и др.) с возможностью передачи аргументов командной строки и указания рабочей папки.
  • ComHandlerAction (COM-обработчик): вызов зарегистрированного COM-объекта (CLSID). Используется для выполнения задач, написанных на C++ или C#.
  • EmailAction (Отправка электронной почты): отправка письма через SMTP-сервер (считается устаревшим, не рекомендуется к использованию в новых задачах).
  • ShowMessageAction (Показ сообщения): вывод диалогового окна с сообщением пользователю (считается устаревшим).

Условия и настройки

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

Условия (Conditions):

  • Power: запуск только при питании от сети, остановка при переходе на батарею, пробуждение компьютера из спящего режима.
  • Network: запуск только при наличии определённого сетевого подключения (например, только через Ethernet).
  • Idle: запуск только когда система простаивает заданное время, остановка при выходе из простоя.

Настройки (Settings):

  • Allow task to be run on demand: разрешение ручного запуска.
  • Run task as soon as possible after a scheduled start is missed: запуск задачи при первой возможности, если компьютер был выключен в запланированное время.
  • If the task fails, restart every [X] minutes: автоматический перезапуск при сбое.
  • Stop the task if it runs longer than [X]: принудительное завершение задачи по тайм-ауту.
  • If the running task does not end when requested, force it to stop: принудительное завершение процесса.
  • Do not start a new instance: запрет на повторный запуск, если экземпляр уже выполняется.

Управление и администрирование

Для управления задачами в Windows существует несколько инструментов:

  1. Графическая оснастка taskschd.msc: основной интерфейс для создания, изменения, удаления и просмотра задач. Отображает иерархию папок, журнал выполнения и список активных задач.
  2. Командлеты PowerShell: модуль ScheduledTasks предоставляет мощные командлеты для автоматизации управления:
  • Get-ScheduledTask — получение списка задач.
  • New-ScheduledTask — создание объекта задачи (в памяти).
  • Register-ScheduledTask — регистрация задачи в системе.
  • Set-ScheduledTask — изменение существующей задачи.
  • Start-ScheduledTask / Stop-ScheduledTask — ручной запуск/остановка.
  • Unregister-ScheduledTask — удаление задачи.
  1. Команда schtasks.exe: утилита командной строки, присутствующая во всех версиях Windows с Task Scheduler. Позволяет создавать, изменять, запускать и удалять задачи, а также запрашивать их состояние. Синтаксис: schtasks /create /?.
  2. COM-API: для разработчиков, встраивающих планировщик в свои приложения.

Применение

Task Scheduler 2.0 используется в самых разных сценариях:

  • Системные задачи: автоматическое обслуживание (дефрагментация, очистка диска), обновления Windows, создание точек восстановления, сбор телеметрии.
  • Административные задачи: запуск резервного копирования, синхронизация данных, выполнение скриптов мониторинга, обновление антивирусных баз, отправка отчётов.
  • Пользовательские задачи: запуск любимых приложений при входе в систему, автоматическая загрузка файлов, напоминания, запуск скриптов для автоматизации рутинных действий.
  • Корпоративные среды: централизованное развёртывание задач через групповые политики (Group Policy) или PowerShell DSC (Desired State Configuration).

Безопасность и ограничения

  • Привилегии: задачи могут выполняться от имени любого пользователя, включая SYSTEM (локальная система), LOCAL SERVICE, NETWORK SERVICE. Для задач, требующих прав администратора, необходимо установить флаг «Run with highest privileges».
  • Изоляция: задачи выполняются в контексте своей учётной записи, что ограничивает доступ к ресурсам других пользователей.
  • Журналирование: все действия планировщика (запуск, остановка, ошибки) фиксируются в журнале событий Windows (Event Viewer) в разделах «Microsoft-Windows-TaskScheduler/Operational» и «System».
  • Ограничения на мобильных устройствах: на планшетах и устройствах с Windows RT/ARM планировщик может иметь ограниченный функционал (например, невозможность пробуждения из спящего режима).
  • Уязвимости: в прошлом в Task Scheduler находили уязвимости, позволявшие повышение привилегий (например, CVE-2021-36934). Microsoft регулярно выпускает исправления для таких проблем.

Интересные факты

  • Task Scheduler 2.0 является основой для механизма «Автоматическое обслуживание» (Automatic Maintenance) в Windows 8 и новее.
  • В Windows 10 и Windows 11 появилась возможность создавать задачи, которые запускаются только при подключении к определённой Wi-Fi сети.
  • Планировщик задач используется для выполнения задач Microsoft Defender Antivirus, Windows Update, OneDrive и многих других встроенных компонентов.
  • XML-схема задач (Task Scheduler Schema) документирована Microsoft и доступна для ознакомления.

Источники

  • Microsoft Docs: Task Scheduler
  • Microsoft Docs: Task Scheduler Schema
  • Windows Internals, 7th Edition (Part 1) by Pavel Yosifovich, Mark E. Russinovich, David A. Solomon, Alex Ionescu
  • Документация по командлетам PowerShell ScheduledTasks
  • Справочник по утилите schtasks.exe

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →