У меня проблема с изменением задач, которая уже существует на компьютере. Я пытаюсь сделать это с помощью созданных интерфейсов взаимодействия из C # (Interop.TaskScheduler.dll, сгенерированный из system32 / taskschd.dll).
Для начала, Я не могу использовать другие библиотеки, такие как http://taskscheduler.codeplex.com/.
Уже протестировано и работает с библиотекой, упомянутой ранее. Теперь, когда я пытаюсь сделать то же самое с созданными интерфейсами, ничего не меняется. В основном то, что я делаю:
string STR_DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
string taskName = "taskName",
user = "user",
pass = "pass";
DateTime nextRun = new DateTime.Now.AddDays(7);
TaskSchedulerClass ts = new TaskSchedulerClass();
ts.Connect(null, null, null, null);
IRegisteredTask task = ts.GetFolder("\\").GetTask(String.Format("\\{0}",taskName));
foreach (ITrigger t in task.Definition.Triggers)
t.StartBoundary = nextRun.ToString(STR_DateTimeFormat.Replace(" ", "T"));
ts.GetFolder("\\").RegisterTaskDefinition(task.Path,
task.Definition,
(int)_TASK_CREATION.TASK_UPDATE,
user,
pass,
_TASK_LOGON_TYPE.TASK_LOGON_PASSWORD,
null);
Для первого взгляда это должно работать, но по какой-то причине, когда я пытаюсь назначить новую дату и время для запуска в строке:
t.StartBoundary = nextRun.ToString(STR_DateTimeFormat.Replace(" ", "T"));
Это не работает. На самом деле в этом foreach он изменился, но когда я попытался отладить и создал другой foreach, который печатает значение StartBoundary, он показывает старое значение. Я делаю что-то неправильно? Есть ли шанс заставить его работать? :-) Спасибо.