Esempio n. 1
0
        public void Dev2RegistrationTrigger_Construct_Test()
        {
            var idleTrigger = new RegistrationTrigger();
            Dev2RegistrationTrigger wrappedIdle = new Dev2RegistrationTrigger(_taskServiceConvertorFactory.Object, idleTrigger);

            Assert.AreEqual(idleTrigger, wrappedIdle.Instance);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        /// <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;
            }
        }