Как создать задачу в планировщике задач на C#

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

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

Это можно было очень давно, но в 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 библиотеку, можно легко интегрировать управление задачами в свои проекты.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.