Все привет, бывают ситуации, когда необходимо создать в планировщике задач, свою задачу. Будь то проверка обновления или добавления сервиса. Есть много разных библиотек которые могут вам в этом помочь, но что, если задача стоит в том, чтобы не использовать сторонние библиотеки для решения тривиальной задачи?
В начале хотел бы о главной проблеме при добавлении задач в планировщик, нужно иметь права администратора, и никак иначе задачу в планировщик без прав не добавить.
Это можно было очень давно, но в Windows 10 дыр становятся все меньше и меньше. Для этого вам необходимо создать манифест, в котором указать запуск вашего приложения с правами администратора.
А выполнить мы можем с помощью cmd команды таким образом:
Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.FileName = "cmd.exe"; p.StartInfo.Arguments = "/C" + "schtasks /create /rl highest /tn My_Prog /sc onlogon /tr \"D:\\install\\MyProg.exe\""; p.StartInfo.CreateNoWindow = true; p.Start();
При использовании кода выше, у вас выполниться команда запуска утилиты schtasks в которой будет добавлена задача в планировщик. Причем командное окно у нас не будет видно, так как мы его намерено скрыли.

Планировщик заданий Windows (Task Scheduler) — это мощный инструмент для автоматизации запуска программ или скриптов по расписанию. С помощью C# можно программно создавать, настраивать и запускать такие задачи.
Теперь если посмотреть в планировщик, мы у видим нашу задачу. Таким образом мы решили поставленную нами цель.
Что потребуется?
Для взаимодействия с планировщиком задач в C# используется библиотека Task Scheduler Managed Wrapper — это обёртка над COM-интерфейсом Windows Task Scheduler.
Установка библиотеки
Установите NuGet-пакет:
Install-Package TaskScheduler
Пример кода: создание задачи
using Microsoft.Win32.TaskScheduler;
using System;
class Program
{
static void Main()
{
// Подключаемся к планировщику задач на локальном компьютере
using (TaskService ts = new TaskService())
{
// Создаём новое задание
TaskDefinition td = ts.NewTask();
td.RegistrationInfo.Description = "Моё задание, созданное из C#";
// Устанавливаем триггер — ежедневный запуск в 12:00
td.Triggers.Add(new DailyTrigger { DaysInterval = 1, StartBoundary = DateTime.Today + TimeSpan.FromHours(12) });
// Действие — запуск программы
td.Actions.Add(new ExecAction("notepad.exe", null, null));
// Регистрируем задание в корневой папке планировщика
ts.RootFolder.RegisterTaskDefinition(@"МояCSharpЗадача", td);
}
Console.WriteLine("Задача успешно создана.");
}
}
Возможности Task Scheduler API
С помощью этой библиотеки вы можете:
- Создавать задачи с любыми триггерами (ежедневно, при входе в систему, по событию и т.д.);
- Настраивать условия выполнения и действия;
- Управлять уже существующими задачами (удалять, изменять, запускать);
- Получать список всех задач.
✅ Заключение
Создание задач в планировщике из C# — это удобный способ автоматизировать запуск приложений, скриптов или служб. Используя TaskScheduler
библиотеку, можно легко интегрировать управление задачами в свои проекты.