Я создал программу C#, которая создает удаленные задания, а затем каждые 5 минут запускает последующие процессы для проверки состояния удаленного задания. Это достигается с помощью материнской задачи в планировщике задач, которая создает дочерние задачи.
Все это работает как я на моей локальной машине; Тем не менее, в производственном процессе у меня есть 2 проблемы:
- Я не могу вызвать порожденную задачу «Запускать, вошел ли пользователь в систему или нет» - требуется, чтобы пользователь вошел в систему.
- Он не создается с установленным флажком «Запускать с наивысшими привилегиями».
Вот код, который я использую для создания задачи из основной задачи:
{
TaskService ts = new TaskService();
TaskDefinition td = ts.NewTask();
//td.Settings.RunOnlyIfLoggedOn = false;
td.Principal.LogonType = TaskLogonType.S4U;
td.Settings.AllowDemandStart = true;
td.Settings.MultipleInstances = TaskInstancesPolicy.IgnoreNew;
td.Principal.RunLevel = TaskRunLevel.Highest;
td.RegistrationInfo.Description = taskDescription;
td.Triggers.Add(new TimeTrigger(DateTime.Now.AddMinutes(5)));
td.Actions.Add(action, arguments);
Microsoft.Win32.TaskScheduler.Task th = ts.RootFolder.RegisterTaskDefinition(taskName, td);
}
Несколько дополнительных замечаний: - Задача-мать настроена на выполнение независимо от того, вошел ли пользователь в систему и выполняется ли с наивысшими привилегиями. - Дочерняя задача всегда выглядит так:
Я видел несколько похожих постов, но все они пропускают аспект создания задачи из задачи.
Спасибо!