public void Dev2RegistrationTrigger_Construct_Test() { var idleTrigger = new RegistrationTrigger(); Dev2RegistrationTrigger wrappedIdle = new Dev2RegistrationTrigger(_taskServiceConvertorFactory.Object, idleTrigger); Assert.AreEqual(idleTrigger, wrappedIdle.Instance); }
public static void RegisterRespawnTask(string filename, string taskName) { if (_isRegistered) { return; } try { try { TaskService.Instance.RootFolder.DeleteTask(taskName, false); } catch (Exception) { for (int i = 1; ; i++) { var newName = taskName + " (" + i + ")"; if ( TaskService.Instance.RootFolder.Tasks.Any( x => string.Equals(x.Name, newName, StringComparison.OrdinalIgnoreCase))) { try { TaskService.Instance.RootFolder.DeleteTask(newName, false); } catch (Exception) { continue; } } taskName = newName; } } var task = TaskService.Instance.NewTask(); var trigger = new RegistrationTrigger(); trigger.Repetition.Interval = TimeSpan.FromMinutes(5); trigger.Repetition.StopAtDurationEnd = false; task.Triggers.Add(trigger); task.Actions.Add(filename); if (CoreHelper.RunningOnVistaOrGreater && User.IsAdministrator) { task.Principal.RunLevel = TaskRunLevel.Highest; } TaskService.Instance.RootFolder.RegisterTaskDefinition(taskName, task); _isRegistered = true; } catch (Exception) { // ignored / FML } }
public void TaskServiceConvertorFactory_SanitiseRegistration_Test() { var fact = new TaskServiceConvertorFactory(); Trigger trig = new RegistrationTrigger(); var wrapped = new Dev2Trigger(fact, trig); var sanitised = fact.SanitiseTrigger(wrapped); AssertEqual(trig, sanitised); }
/// <summary> /// Creates a new task, registers the task, and returns the instance. /// </summary> /// <param name="path">The task name. If this value is NULL, the task will be registered in the root task folder and the task name will be a GUID value that is created by the Task Scheduler service. A task name cannot begin or end with a space character. The '.' character cannot be used to specify the current task folder and the '..' characters cannot be used to specify the parent task folder in the path.</param> /// <param name="trigger">The <see cref="Trigger" /> to determine when to run the task.</param> /// <param name="exePath">The executable path.</param> /// <param name="arguments">The arguments (optional). Value can be NULL.</param> /// <param name="userId">The user credentials used to register the task.</param> /// <param name="password">The password for the userId used to register the task.</param> /// <param name="logonType">A <see cref="TaskLogonType" /> value that defines what logon technique is used to run the registered task.</param> /// <param name="description">The task description.</param> /// <returns> /// A <see cref="Task" /> instance of the registered task. /// </returns> public Task AddTask([NotNull] string path, QuickTriggerType trigger, [NotNull] string exePath, string arguments = null, string userId = null, string password = null, TaskLogonType logonType = TaskLogonType.InteractiveToken, string description = null) { // Create a trigger based on quick trigger Trigger newTrigger; switch (trigger) { case QuickTriggerType.Boot: newTrigger = new BootTrigger(); break; case QuickTriggerType.Idle: newTrigger = new IdleTrigger(); break; case QuickTriggerType.Logon: newTrigger = new LogonTrigger(); break; case QuickTriggerType.TaskRegistration: newTrigger = new RegistrationTrigger(); break; case QuickTriggerType.Hourly: newTrigger = new DailyTrigger { Repetition = new RepetitionPattern(TimeSpan.FromHours(1), TimeSpan.FromDays(1)) }; break; case QuickTriggerType.Daily: newTrigger = new DailyTrigger(); break; case QuickTriggerType.Weekly: newTrigger = new WeeklyTrigger(); break; case QuickTriggerType.Monthly: newTrigger = new MonthlyTrigger(); break; default: throw new ArgumentOutOfRangeException(nameof(trigger), trigger, null); } return(AddTask(path, newTrigger, new ExecAction(exePath, arguments), userId, password, logonType, description)); }
private void triggerTypeCombo_SelectedValueChanged(object sender, EventArgs e) { if (triggerTypeCombo.SelectedValue == null) { return; } Trigger newTrigger = null; switch (TriggerView) { case TaskTriggerDisplayType.Schedule: default: settingsTabControl.SelectedTab = scheduleTab; if (!onAssignment) { newTrigger = new TimeTrigger(); } break; case TaskTriggerDisplayType.Logon: logonRemotePanel.Visible = false; settingsTabControl.SelectedTab = logonTab; if (!onAssignment) { newTrigger = new LogonTrigger(); } break; case TaskTriggerDisplayType.Boot: settingsTabControl.SelectedTab = startupTab; if (!onAssignment) { newTrigger = new BootTrigger(); } break; case TaskTriggerDisplayType.Idle: settingsTabControl.SelectedTab = idleTab; if (!onAssignment) { newTrigger = new IdleTrigger(); } break; case TaskTriggerDisplayType.Event: settingsTabControl.SelectedTab = onEventTab; if (!onAssignment) { newTrigger = new EventTrigger(); } break; case TaskTriggerDisplayType.Registration: settingsTabControl.SelectedTab = startupTab; if (!onAssignment) { newTrigger = new RegistrationTrigger(); } break; case TaskTriggerDisplayType.SessionConnect: case TaskTriggerDisplayType.SessionDisconnect: case TaskTriggerDisplayType.WorkstationLock: case TaskTriggerDisplayType.WorkstationUnlock: logonRemotePanel.Visible = (int)TriggerView < (int)TaskTriggerDisplayType.WorkstationLock; settingsTabControl.SelectedTab = logonTab; if (!onAssignment) { newTrigger = new SessionStateChangeTrigger() { StateChange = (TaskSessionStateChangeType)(TriggerView - 110) } } ; break; case TaskTriggerDisplayType.Custom: settingsTabControl.SelectedTab = customTab; triggerTypeCombo.Enabled = okBtn.Enabled = false; break; } if (newTrigger != null && !onAssignment) { if (trigger != null) { newTrigger.CopyProperties(trigger); } if (newTrigger is ICalendarTrigger) { if (newTrigger.StartBoundary == DateTime.MinValue) { newTrigger.StartBoundary = DateTime.Now; } } else { newTrigger.StartBoundary = initialStartBoundary; } Trigger = newTrigger; } }