schtasks.exe против ITaskScheduler

Я пытаюсь написать код для автоматической «настройки» набора запланированных задач на машине. Программа будет читать файл XML, а затем «настраивать» время выполнения и т. д. задачи на основе информации в файле XML.

Идея должна заключаться в том, что программу можно «запускать» на машине несколько раз и автоматически «добавлять/удалять» любые эффективные изменения. То, как я хотел это сделать, было следующим:

  1. Все задачи будут создаваться с каким-то специальным «префиксом». Когда программа запускается, она «удаляет» все задачи с этим префиксом, поскольку можно предположить, что они были запущены программой с другой, ранней конфигурацией.

  2. Затем программа «создает» новые задачи.

Поэтому моя программа "конфигурация" должна иметь возможность

  1. Получить список всех существующих запланированных задач на машине
  2. Удалить задачи по имени
  3. Создавайте новые задачи по имени

Проще всего будет, если я смогу написать программу на C#.

Кажется, есть два способа сделать это:

  1. Программа C# явно запускает программу «schtasks.exe» с соответствующими параметрами командной строки. Он «читает» и анализирует выходные данные schtasks.exe, чтобы получить список существующих задач и удалить их. Затем он снова запускает schtasks.exe для создания новых задач.

  2. Используйте интерфейс ITaskManager через оболочку .NET COM для программного запроса и планирования задач.

Я бы предпочел использовать № 2, но у меня есть подозрение, что это «старая» функциональность — то, что я могу найти в Интернете, подразумевает, что функциональность диспетчера задач улучшилась со времен Windows NT.

Является ли schtasks.exe просто инструментом командной строки, написанным поверх COM-интерфейса ITaskManager? Или есть вещи, которые schtasks.exe может делать, чего не может интерфейс ITaskManager?

Создает ли интерфейс/компонент COM ITaskManager файлы «.job» в папке запланированных задач?


person Paul Hollingsworth    schedule 25.09.2009    source источник


Ответы (2)


Новый Task Scheduler 2.0 появился в Windows Vista, и для доступа к нему используется интерфейс ITaskService. Я считаю, что Schtasks.exe построен на этом API.

Однако API-интерфейсы TS 1.0 ITaskScheduler по-прежнему работают для обеспечения обратной совместимости. Какой из них использовать, зависит от того, какие версии операционной системы вам нужны, и нужны ли вам новые функции TS 2.0.

person Mattias S    schedule 25.09.2009

Я успешно использую эту библиотеку: http://www.codeproject.com/KB/cs/tsnewlib.aspx

Похоже, он использует COM-интерфейс ITaskScheduler внутри и предоставляет необходимые мне функции.

Спасибо, Маттиас, за ваш быстрый ответ (проголосовали за).

person Paul Hollingsworth    schedule 25.09.2009