Библиотека Планировщика задач
Библиотека Планировщика задач (англ. Task Scheduler Library) — это программный компонент операционной системы Microsoft Windows, предоставляющий прикладной программный интерфейс (API) для создания, настройки, управления и выполнения автоматических задач по расписанию или при наступлении определённых системных событий. Библиотека является частью службы «Планировщик задач» (Task Scheduler) и служит для программного взаимодействия с этой службой.
История
Появление и развитие
Первая версия Планировщика задач появилась в Windows 95 как часть пакета Microsoft Plus! под названием System Agent. В Windows 98 он был встроен в систему, а его API был представлен как COM-объект. Однако полноценная Библиотека Планировщика задач (Task Scheduler Library) в современном виде была введена в Windows Vista (2006 год) и Windows Server 2008. Она пришла на смену устаревшей версии API, использовавшейся в Windows XP и более ранних системах.
Версии
- Task Scheduler 1.0 — использовался в Windows 2000, Windows XP и Windows Server 2003. API был основан на COM и предоставлял ограниченные возможности.
- Task Scheduler 2.0 — появился в Windows Vista и Windows Server 2008. Включает новую библиотеку (Task Scheduler 2.0 API), которая поддерживает XML-формат задач, триггеры на основе событий, условия и действия, а также улучшенную безопасность. Эта версия является основной для всех последующих версий Windows (7, 8, 10, 11 и соответствующих серверных редакций).
Архитектура и устройство
Компоненты
Библиотека Планировщика задач представляет собой набор COM-интерфейсов, реализованных в системных DLL-библиотеках (в первую очередь taskschd.dll). Основные компоненты:
- ITaskService — главный интерфейс для подключения к службе Планировщика задач. Позволяет получить доступ к корневой папке задач.
- ITaskFolder — представляет папку в иерархии задач. Позволяет перечислять, создавать, удалять и изменять задачи.
- IRegisteredTask — представляет зарегистрированную задачу. Содержит методы для запуска, остановки, получения состояния и свойств задачи.
- ITaskDefinition — определяет структуру задачи: триггеры, действия, условия, настройки и параметры безопасности.
- ITrigger — базовый интерфейс для триггеров (запуск по расписанию, при входе в систему, при простое, при событии и т.д.).
- IAction — базовый интерфейс для действий (запуск программы, отправка электронной почты, отображение сообщения).
- ITaskSettings — настройки выполнения задачи (например, разрешение запуска при питании от батареи, перезапуск при сбое).
- IRegistrationInfo — информация о задаче (автор, описание, дата создания).
Формат хранения
Задачи в Windows Vista и новее хранятся в XML-формате в файлах с расширением .job в папке %SystemRoot%\System32\Tasks и её подпапках. Библиотека позволяет программно создавать и редактировать эти XML-файлы через COM-объекты.
Классификация задач
По типу триггера
- Временные триггеры:
- Однократный запуск в заданное время.
- Ежедневный, еженедельный, ежемесячный запуск.
- Запуск по расписанию с повторением.
- Событийные триггеры:
- При запуске системы.
- При входе пользователя в систему.
- При простое системы.
- При создании, изменении или удалении файла/папки.
- При возникновении события в журнале Windows.
- Комбинированные триггеры — могут сочетать несколько условий (например, запуск по расписанию, но только если компьютер простаивает).
По типу действия
- Запуск программы — выполнение исполняемого файла (
.exe,.bat,.cmd,.vbsи др.). - Отправка электронной почты — устаревшее действие (не рекомендуется в современных версиях Windows).
- Отображение сообщения — устаревшее действие (не рекомендуется).
- Запуск COM-объекта — выполнение скрипта или компонента через COM.
По условиям выполнения
- Запуск только при питании от сети (или от батареи).
- Запуск только при простое системы.
- Запуск только при наличии сетевого подключения.
- Запуск только при определённой учётной записи пользователя.
Применение
Системные задачи
Операционная система Windows использует Планировщик задач для выполнения множества служебных операций:
- Автоматическое обновление системы (Windows Update).
- Дефрагментация дисков.
- Очистка диска (Disk Cleanup).
- Создание точек восстановления системы.
- Синхронизация времени.
- Выполнение антивирусных сканирований (например, Microsoft Defender).
Пользовательские задачи
Пользователи и администраторы могут создавать собственные задачи для автоматизации рутинных действий:
- Резервное копирование данных.
- Запуск скриптов очистки временных файлов.
- Автоматический запуск приложений при входе в систему.
- Мониторинг состояния системы и отправка уведомлений.
Программное использование
Разработчики могут программно создавать и управлять задачами через Библиотеку Планировщика задач. Это позволяет:
- Интегрировать автоматизацию в сторонние приложения.
- Создавать задачи для выполнения обновлений или обслуживания.
- Управлять задачами удалённо через RPC.
Примеры использования
Создание задачи через PowerShell
В современных версиях Windows для управления задачами часто используется модуль ScheduledTasks в PowerShell. Пример создания задачи, запускающей блокнот каждый день в 10:00:
``powershell $Action = New-ScheduledTaskAction -Execute "notepad.exe" $Trigger = New-ScheduledTaskTrigger -Daily -At 10:00AM Register-ScheduledTask -TaskName "MyNotepadTask" -Action $Action -Trigger $Trigger ``
Создание задачи через COM-объект (C++)
```cpp
include <taskschd.h>
include <comdef.h>
// Инициализация COM, создание ITaskService, ITaskFolder, ITaskDefinition, ITrigger, IAction // и регистрация задачи. ```
Безопасность и права доступа
Учётные записи
Задачи могут выполняться от имени:
- Текущего пользователя.
- Системной учётной записи (SYSTEM).
- Учётной записи службы.
- Указанного пользователя (с паролем).
Требования к правам
Для создания, изменения или удаления задач через Библиотеку Планировщика задач требуются права администратора (или соответствующие разрешения в папке задач). Пользователь без прав администратора может управлять только своими задачами.
Риски
Злоумышленники могут использовать Планировщик задач для:
- Запуска вредоносного ПО с повышенными привилегиями.
- Создания задач для постоянного присутствия в системе (persistence).
- Выполнения команд с правами системы.
Ограничения и критика
Недостатки
- Сложность для новичков — графический интерфейс Планировщика задач может быть перегружен, а программный API требует знания COM.
- Устаревшие действия — действия по отправке почты и отображению сообщений не работают в современных версиях Windows.
- Зависимость от службы — если служба «Планировщик задач» остановлена, все задачи не выполняются.
- Проблемы с правами — для некоторых задач требуется хранение пароля в системе, что может быть небезопасно.
Альтернативы
- Windows Task Scheduler — графический интерфейс для управления задачами.
- PowerShell ScheduledTasks — модуль для автоматизации через командную строку.
- Сторонние планировщики — например,
cronв Unix-подобных системах,Task Schedulerв Linux (черезsystemd).
Интересные факты
- В Windows 10 и 11 Планировщик задач используется для выполнения более 200 системных задач по умолчанию.
- Библиотека Планировщика задач поддерживает работу с удалёнными компьютерами через DCOM.
- Формат хранения задач (XML) позволяет легко переносить задачи между системами или редактировать их вручную.
Источники
- Microsoft Docs: Task Scheduler Reference
- Windows Internals, Part 1 (7th edition) — Pavel Yosifovich, Mark E. Russinovich, David A. Solomon, Alex Ionescu
- MSDN: Task Scheduler 2.0 API
- Документация PowerShell: ScheduledTasks Module
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →