2009-09-25 2 views
3

Я пытаюсь написать код для автоматической «настройки» запланированных задач на машине. Программа прочитает XML-файл, затем «настроит» время выполнения и т. Д. Задачи на основе информации в XML-файле.schtasks.exe vs ITaskScheduler

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

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

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

Так что мои потребности программы «конфигурации» быть в состоянии

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

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

Там, кажется, два способа, я могу сделать это:

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

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

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

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

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

ответ

2

Я имею некоторый успех с помощью этой библиотеки: http://www.codeproject.com/KB/cs/tsnewlib.aspx

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

Благодарим Маттиаса за ваш быстрый ответ (upvoted).

2

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

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

Смежные вопросы