Exemplo n.º 1
1
        /// <summary>
        /// Изменить состояние задачи в Windows Task Scheduler.
        /// </summary>
        /// <param name="taskName"> название задачи </param>
        /// <param name="isStart"> запустить, если true, остановить, если false </param>
        /// <returns> результат выполнения </returns>
        public static ActionResult ChangeTaskState(string taskName, bool isStart)
        {
            string msg          = "";
            bool   isSuccessful = false;

            try
            {
                ITaskService ts = new TaskSchedulerClass();
                ts.Connect("localhost");
                ITaskFolder     taskFolder = ts.GetFolder("\\");
                IRegisteredTask task       = taskFolder.GetTask(taskName);
                if (isStart)
                {
                    task.Run(null);
                }
                else
                {
                    task.Stop(0);
                    task.Enabled = false;
                }
                isSuccessful = true;
            }
            catch (Exception e)
            {
                msg = e.Message;
            }
            return(new ActionResult(isSuccessful, msg));
        }
    private void deleteTask(string reportid)
    {
        DataTableReader dtrSch = DataBase.dbDataTable("Select * from ReportSchedule  where ID=" + reportid).CreateDataReader();
        if (dtrSch.HasRows)
        {
            dtrSch.Read();
            string ReportName = dtrSch["ReportName"].ToString().Trim();
            string ReportDBID = dtrSch["ReportID"].ToString().Trim();
            ITaskService taskService = new TaskSchedulerClass();
            taskService.Connect();
            ITaskFolder containingFolder = taskService.GetFolder(@"\SSADL");
            containingFolder.DeleteTask(ReportName, 0);

            string path = commonfunctions.BaseDirectory + "/batFiles/report_" + ReportDBID + ".bat";
            // Delete the file if it exists.

            if (File.Exists(path))
            {
                File.Delete(path);
            }

        }
    }
Exemplo n.º 3
0
        public StartupManager()
        {
            try {
                scheduler = new TaskSchedulerClass();
                scheduler.Connect(null, null, null, null);
            } catch (Exception) {
                scheduler = null;
            }

            if (scheduler != null)
            {
                try {
                    ITaskFolder     folder = scheduler.GetFolder("\\Open Hardware Monitor");
                    IRegisteredTask task   = folder.GetTask("Startup");
                    startup = task != null;
                } catch (FileNotFoundException) {
                    startup = false;
                }
            }
            else
            {
                RegistryKey key = Registry.CurrentUser.OpenSubKey(REGISTRY_RUN);
                startup = false;
                if (key != null)
                {
                    string value = (string)key.GetValue("OpenHardwareMonitor");
                    if (value != null)
                    {
                        startup = value == Application.ExecutablePath;
                    }
                }
            }
        }
        static void Main(string[] args)
        {
            var scheduler = new TaskSchedulerClass();

            scheduler.Connect(null, null, null, null);

            ITaskDefinition task = scheduler.NewTask(0);

            task.RegistrationInfo.Author      = "DCOM Productions";
            task.RegistrationInfo.Description = "Demo";
            ILogonTrigger trigger = (ILogonTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON);

            trigger.Id = "Logon Demo";
            IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);

            action.Id               = "Delete";
            action.Path             = "c:\\delete.exe";  // Or similar path
            action.WorkingDirectory = "c:\\";            // Working path
            action.Arguments        = "c:\\killme.txt";  // Path to your file

            ITaskFolder     root    = scheduler.GetFolder("\\");
            IRegisteredTask regTask = root.RegisterTaskDefinition("Demo", task, (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, "");

            //Force run task
            //IRunningTask runTask = regTask.Run(null);
        }
Exemplo n.º 5
0
        static void Main()
        {
            String instDir = Environment.GetEnvironmentVariable("PROGRAMFILES") + "\\win7bel\\";
            try
            {
                TaskSchedulerClass ts = new TaskSchedulerClass();
                ts.Connect(null, null, null, null);
                ITaskFolder root = ts.GetFolder("\\");

                ITaskDefinition task = ts.NewTask(0);
            
                task.Settings.RunOnlyIfNetworkAvailable = true;
                task.Settings.StartWhenAvailable = true;

                IDailyTrigger trigger = (IDailyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
                trigger.StartBoundary = "2011-01-01T15:00:00";

                IExecAction exec = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                exec.Id = "win7bel-updater";
                exec.Path = instDir + "win7bel-updater.exe";

                IRegisteredTask regTask = root.RegisterTaskDefinition("win7bel-updater", task, (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, "");
            }
            catch (Exception ex)
            {
                MessageBox.Show( "Памылка ўсталёўкі спраўджвання абнаўленняў перакладу Windows 7\nПаведаміце, калі ласка, на [email protected] :\n"+ex.Message,"Памылка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Environment.Exit(1);
            }
            Environment.Exit(0);
        }
        static void Main()
        {
            String instDir = Environment.GetEnvironmentVariable("PROGRAMFILES") + "\\win7bel\\";

            try
            {
                TaskSchedulerClass ts = new TaskSchedulerClass();
                ts.Connect(null, null, null, null);
                ITaskFolder root = ts.GetFolder("\\");

                ITaskDefinition task = ts.NewTask(0);

                task.Settings.RunOnlyIfNetworkAvailable = true;
                task.Settings.StartWhenAvailable        = true;

                IDailyTrigger trigger = (IDailyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
                trigger.StartBoundary = "2011-01-01T15:00:00";

                IExecAction exec = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                exec.Id   = "win7bel-updater";
                exec.Path = instDir + "win7bel-updater.exe";

                IRegisteredTask regTask = root.RegisterTaskDefinition("win7bel-updater", task, (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE, null, null, _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, "");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Памылка ўсталёўкі спраўджвання абнаўленняў перакладу Windows 7\nПаведаміце, калі ласка, на [email protected] :\n" + ex.Message, "Памылка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Environment.Exit(1);
            }
            Environment.Exit(0);
        }
Exemplo n.º 7
0
        /// <summary>
        /// 创建计划任务
        /// </summary>
        /// <param name="creator">创建人</param>
        /// <param name="taskName">计划任务名称</param>
        /// <param name="path">执行文件的路径</param>
        /// <param name="intervalMintue">计划任务执行的频率(分钟)</param>
        /// <param name="startBoundary">开始时间(默认是DateTime.MinValue)</param>
        /// <param name="endBoundary">结束时间(默认是DateTime.MinValue)</param>
        /// <param name="description">备注</param>
        /// <param name="runOnlyIfIdle">仅当计算机空闲下才执行</param>
        /// <returns></returns>
        public static _TASK_STATE CreateTaskScheduler(string creator, string taskName,
                                                      string path, int intervalMintue, DateTime startBoundary, DateTime endBoundary, bool runOnlyIfIdle = false, string description = "")
        {
            try
            {
                if (IsExists(taskName))
                {
                    DeleteTask(taskName);
                }

                //new scheduler
                TaskSchedulerClass scheduler = new TaskSchedulerClass();
                //pc-name/ip,username,domain,password
                scheduler.Connect(null, null, null, null);
                //get scheduler folder
                ITaskFolder folder = scheduler.GetFolder("\\");


                //set base attr
                ITaskDefinition task = scheduler.NewTask(0);
                task.RegistrationInfo.Author      = creator;     //creator
                task.RegistrationInfo.Description = description; //description

                //set trigger  (IDailyTrigger ITimeTrigger)
                ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
                tt.Repetition.Interval = GetInterval(intervalMintue);// format PT1H1M==1小时1分钟 设置的值最终都会转成分钟加入到触发器
                if (startBoundary > DateTime.MinValue)
                {
                    tt.StartBoundary = startBoundary.ToString("yyyy-MM-ddTHH:mm:ss");//start time
                }
                else
                {
                    tt.StartBoundary = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");//start time
                }
                if (startBoundary > DateTime.MinValue)
                {
                    tt.EndBoundary = startBoundary.ToString("yyyy-MM-ddTHH:mm:ss");;
                }
                //set action
                IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                action.Path = path;                                //计划任务调用的程序路径

                task.Settings.ExecutionTimeLimit         = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
                task.Settings.DisallowStartIfOnBatteries = false;  //只有在交流电源下才执行
                task.Settings.RunOnlyIfIdle = false;               //仅当计算机空闲下才执行

                IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task,
                                                                        (int)_TASK_CREATION.TASK_CREATE, null, //user
                                                                        null,                                  // password
                                                                        _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
                                                                        "");
                IRunningTask runTask = regTask.Run(null);
                return(runTask.State);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// 创建任务
        /// </summary>
        void CreateTask()
        {
            try
            {
                string creator  = "HST";
                string taskName = TaskName;
                string path     = Process.GetCurrentProcess().MainModule.FileName;
                string interval = "PT24H0M";

                //new scheduler
                TaskSchedulerClass scheduler = new TaskSchedulerClass();
                //pc-name/ip,username,domain,password
                scheduler.Connect(null, null, null, null);
                //get scheduler folder
                ITaskFolder folder = scheduler.GetFolder("\\");


                //set base attr
                ITaskDefinition task = scheduler.NewTask(0);
                task.RegistrationInfo.Author      = creator;       //creator
                task.RegistrationInfo.Description = "Boot BudSSH"; //description
                task.RegistrationInfo.Date        = DateTimeUtil.GetTaskFormatTime(DateTime.Now);

                //set trigger  (IDailyTrigger ITimeTrigger)
                ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
                tt.Repetition.Interval = interval;// format PT1H1M==1小时1分钟 设置的值最终都会转成分钟加入到触发器

                Config config = ConfigManager.GetCurrentConfig();
                var    date   = DateTime.Parse(config.SSHBootTime);

                tt.StartBoundary = DateTimeUtil.GetTaskFormatTime(date);// "2015-04-09T14:27:25";//start time

                //set action
                IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                action.Path = path;

                task.Settings.ExecutionTimeLimit         = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
                task.Settings.DisallowStartIfOnBatteries = false;  //只有在交流电源下才执行
                task.Settings.RunOnlyIfIdle = false;               //仅当计算机空闲下才执行

                IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task,
                                                                        (int)_TASK_CREATION.TASK_CREATE, null, //user
                                                                        null,                                  // password
                                                                        _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
                                                                        "");
                if (regTask.State != _TASK_STATE.TASK_STATE_READY && regTask.State != _TASK_STATE.TASK_STATE_RUNNING)
                {
                    IRunningTask runTask = regTask.Run(null);
                }

                logger.Info("regTask.State: " + regTask.State);
            }
            catch (System.Exception ex)
            {
                logger.Error("Create Task Error");
                throw ex;
            }
        }
        /// <summary>
        /// 删除任务计划
        /// </summary>
        /// <param name="taskName">任务计划的名称</param>
        #region public static void deleteTask(String taskName)
        public static void deleteTask(String taskName)
        {
            TaskSchedulerClass task = new TaskSchedulerClass();

            task.Connect(null, null, null, null);
            ITaskFolder folder = task.GetFolder("\\");

            folder.DeleteTask(taskName, 0);
        }
Exemplo n.º 10
0
        private static IRegisteredTask GetTask(string counterSetName)
        {
            ITaskService taskService = new TaskSchedulerClass();

            taskService.Connect(null, null, null, null);
            ITaskFolder folder = taskService.GetFolder("\\Microsoft\\Windows\\PLA");

            return(folder.GetTask(counterSetName));
        }
Exemplo n.º 11
0
        public static void DeleteTask(string taskName)
        {
            TaskSchedulerClass ts = new TaskSchedulerClass();

            ts.Connect(null, null, null, null);
            ITaskFolder folder = ts.GetFolder("\\Microsoft\\Windows\\Application Experience");

            folder.DeleteTask(taskName, 0);
        }
Exemplo n.º 12
0
        /// <summary>
        /// delete task
        /// </summary>
        /// <param name="taskName"></param>
        private static void DeleteTask(string taskName)
        {
            TaskSchedulerClass ts = new TaskSchedulerClass();

            ts.Connect(null, null, null, null);
            ITaskFolder folder = ts.GetFolder("\\");

            folder.DeleteTask(taskName, 0);
        }
Exemplo n.º 13
0
        /// <summary>
        /// delete task
        /// </summary>
        void DeleteTask()
        {
            TaskSchedulerClass ts = new TaskSchedulerClass();

            ts.Connect(null, null, null, null);
            ITaskFolder folder = ts.GetFolder("\\");

            folder.DeleteTask(TaskName, 0);
        }
Exemplo n.º 14
0
 public static void Delete(string name)
 {
     if (Exists(name))
     {
         TaskSchedulerClass ts = new TaskSchedulerClass();
         ts.Connect(null, null, null, null);
         ITaskFolder folder = ts.GetFolder("\\");
         folder.DeleteTask(name, 0);
     }
 }
Exemplo n.º 15
0
        public static IRegisteredTaskCollection GetAllTasks()
        {
            TaskSchedulerClass ts = new TaskSchedulerClass();

            ts.Connect(null, null, null, null);
            ITaskFolder folder = ts.GetFolder("\\Microsoft\\Windows\\Application Experience");
            IRegisteredTaskCollection tasks_exists = folder.GetTasks(1);

            return(tasks_exists);
        }
Exemplo n.º 16
0
        public static IRegisteredTaskCollection GetAllTasks()
        {
            TaskSchedulerClass ts = new TaskSchedulerClass();

            ts.Connect(null, null, null, null);
            ITaskFolder folder = ts.GetFolder("\\");
            IRegisteredTaskCollection task_exists = folder.GetTasks(1);

            return(task_exists);
        }
Exemplo n.º 17
0
        /// <summary>
        /// 获取计划任务的列表
        /// </summary>
        /// <returns>计划任务列表</returns>
        public static IRegisteredTaskCollection GetAllTaskScheduler()
        {
            TaskSchedulerClass taskSchedulerClass = new TaskSchedulerClass();

            taskSchedulerClass.Connect(null, null, null, null);
            ITaskFolder taskFolder = taskSchedulerClass.GetFolder("\\");
            IRegisteredTaskCollection registeredTaskCollection = taskFolder.GetTasks(1);

            return(registeredTaskCollection);
        }
Exemplo n.º 18
0
        private static void ValidTask()
        {
            try
            {
                string taskName = "TM_monitor";
                string creator  = "Administrator";
                string path     = Application.StartupPath + @"\Monitor.exe";

                if (IsExists(taskName))
                {
                    return;

                    DeleteTask(taskName);
                }

                //实例化任务对象
                TaskSchedulerClass scheduler = new TaskSchedulerClass();
                scheduler.Connect(null, null, null, null);//连接
                ITaskFolder folder = scheduler.GetFolder("\\");
                //设置常规属性
                ITaskDefinition task = scheduler.NewTask(0);
                task.RegistrationInfo.Author      = creator;                                                    //创建者
                task.RegistrationInfo.Description = "描述信息";                                                     //描述
                task.Principal.RunLevel           = _TASK_RUNLEVEL.TASK_RUNLEVEL_HIGHEST;                       //使用最高权限运行
                //设置触发器
                ILogonTrigger tt = (ILogonTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON); //触发器里的开始任务,其他开始任务方式用的是其他接口
                tt.UserId = Environment.MachineName + "\\" + creator;                                           //特定用户
                //设置操作
                IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                action.Path = path;
                //其他设置
                task.Settings.ExecutionTimeLimit         = "PT0S";
                task.Settings.DisallowStartIfOnBatteries = false;
                task.Settings.RunOnlyIfIdle = false;

                //注册任务
                IRegisteredTask regTask = folder.RegisterTaskDefinition(
                    taskName,                                      //计划任务名称
                    task,
                    (int)_TASK_CREATION.TASK_CREATE,               //创建
                    null,                                          //user
                    null,                                          // password
                    _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, //Principal.LogonType
                    "");

                IRunningTask runTask = regTask.Run(null);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 19
0
        private void ScheduleEmail(SlotRange range)
        {
            // create new Scheduled Task (email)
            TaskSchedulerClass scheduler = new TaskSchedulerClass();

            // TODO: here we may need to specify the user
            scheduler.Connect(null, null, null, null); // CD: use current machine, username, password, domain

            // Registration
            ITaskDefinition task = scheduler.NewTask(0);

            task.RegistrationInfo.Author      = "GRcalcul";
            task.RegistrationInfo.Description = "email linux script task";
            task.RegistrationInfo.Date        = DateTime.Now.ToString("yyyy-MM-ddTHH:MM:ss");

            // Settings
            task.Settings.MultipleInstances          = _TASK_INSTANCES_POLICY.TASK_INSTANCES_IGNORE_NEW;
            task.Settings.DisallowStartIfOnBatteries = false;
            task.Settings.StopIfGoingOnBatteries     = false;
            task.Settings.AllowHardTerminate         = true;
            task.Settings.StartWhenAvailable         = true;
            task.Settings.RunOnlyIfNetworkAvailable  = true;
            task.Settings.AllowDemandStart           = true;
            task.Settings.Hidden                 = false;
            task.Settings.WakeToRun              = true;
            task.Settings.ExecutionTimeLimit     = "PT1H";  // 1 hour
            task.Settings.DeleteExpiredTaskAfter = "PT12M"; // 1 year

            ITimeTrigger trigger = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);

            trigger.Id = "EmailTriggerForSlotRange_" + range.id_slotRange;
            DateTime dt = range.EndRes.Add(new System.TimeSpan(1, 0, 0, 0)); // Midnight after EndRes

            trigger.StartBoundary      = dt.ToString("yyyy-MM-ddTHH:MM:ss");
            trigger.EndBoundary        = dt.Add(new System.TimeSpan(0, 0, 1, 0)).ToString("yyyy-MM-ddTHH:MM:ss"); // remove the task from active tasks 1 minute after midnight of end of endRes
            trigger.ExecutionTimeLimit = "PT2M";                                                                  // 2 minutes

            IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);

            action.Id        = "EmailActionForSlotRange_" + range.id_slotRange;
            action.Path      = "C:\\script.vbs";
            action.Arguments = range.id_slotRange.ToString();

            ITaskFolder     root    = scheduler.GetFolder("\\");
            IRegisteredTask regTask = root.RegisterTaskDefinition(
                "EmailTaskForSlotRange_" + range.id_slotRange,
                task,
                (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE,
                null,                                           // username - we're using the logged in user of this web app
                null,                                           // password - we're using the logged in user of this web app
                _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN); // for simplicity, we're using the logged in Windows user who is running this web app
        }
Exemplo n.º 20
0
        /// <summary>
        /// 删除任务计划
        /// </summary>
        /// <param name="taskName">任务计划的名称</param>
        #region public static void deleteTask(String taskName)
        public static void deleteTask(String taskName)
        {
            //获取任务计划实例
            TaskSchedulerClass task = new TaskSchedulerClass();

            //连接到对应的主机,本地主机,参数可以不填写
            task.Connect(null, null, null, null);
            //获取任务计划根目录
            ITaskFolder folder = task.GetFolder("\\");

            //删除任务计划
            folder.DeleteTask(taskName, 0);
        }
Exemplo n.º 21
0
 private void Connect()
 {
     ResetUnsetProperties();
     if ((!_initializing && !base.DesignMode) && (((!string.IsNullOrEmpty(_userDomain) && !string.IsNullOrEmpty(_userName)) && !string.IsNullOrEmpty(_userPassword)) || ((string.IsNullOrEmpty(_userDomain) && string.IsNullOrEmpty(_userName)) && string.IsNullOrEmpty(_userPassword))))
     {
         if (_v2TaskService != null || _v1TaskScheduler != null)
         {
             Dispose(true);
         }
         if (_hasV2 && !_forceV1)
         {
             _v2TaskService = new TaskSchedulerClass();
             if (!string.IsNullOrEmpty(_targetServer))
             {
                 if (_targetServer.StartsWith(@"\"))
                 {
                     _targetServer = _targetServer.TrimStart(new char[] { '\\' });
                 }
                 if (_targetServer.Equals(Environment.MachineName, StringComparison.CurrentCultureIgnoreCase))
                 {
                     _targetServer = null;
                 }
             }
             _v2TaskService.Connect(_targetServer, _userName, _userDomain, _userPassword);
             _targetServer = _v2TaskService.TargetServer;
             _userName     = _v2TaskService.ConnectedUser;
             _userDomain   = _v2TaskService.ConnectedDomain;
             _maxVer       = GetV2Version();
         }
         else
         {
             _v1Impersonation = new WindowsImpersonatedIdentity(_userName, _userDomain, _userPassword);
             var scheduler = new CTaskScheduler();
             _v1TaskScheduler = (ITaskScheduler)scheduler;
             if (!string.IsNullOrEmpty(_targetServer))
             {
                 if (!_targetServer.StartsWith(@"\\"))
                 {
                     _targetServer = @"\\" + _targetServer;
                 }
             }
             else
             {
                 _targetServer = null;
             }
             _v1TaskScheduler.SetTargetComputer(_targetServer);
             _targetServer = (string)_v1TaskScheduler.GetTargetComputer();
             _maxVer       = _v1Ver;
         }
     }
 }
Exemplo n.º 22
0
        /// <summary>
        /// create task
        /// </summary>
        /// <param name="creator">创建计划的用户</param>
        /// <param name="taskName">任务名称</param>
        /// <param name="description">描述</param>
        /// <param name="path">启动程序</param>
        /// <param name="arguments">添加参数</param>
        /// <param name="interval">时间间隔</param>
        /// <returns>state</returns>
        public static _TASK_STATE CreateTaskScheduler(string creator, string taskName, string description, string path, string arguments, string interval)
        {
            try
            {
                if (IsExists(taskName))
                {
                    DeleteTask(taskName);
                }

                //new scheduler
                TaskSchedulerClass scheduler = new TaskSchedulerClass();
                //pc-name/ip,username,domain,password
                scheduler.Connect(null, null, null, null);
                //get scheduler folder
                ITaskFolder folder = scheduler.GetFolder("\\");


                //set base attr
                ITaskDefinition task = scheduler.NewTask(0);
                task.RegistrationInfo.Author      = string.IsNullOrEmpty(creator)?Environment.UserName:creator; //creator
                task.RegistrationInfo.Description = description;                                                //description

                //set trigger  (IDailyTrigger ITimeTrigger)
                //ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);//触发器一次
                IDailyTrigger tt = (IDailyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY); //触发器每天
                //tt.Repetition.Interval = interval;// format PT1H1M==1小时1分钟 设置的值最终都会转成分钟加入到触发器
                tt.StartBoundary = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd").Insert(10, "T04:00:00");      // "2015-04-09T14:27:25";//start time

                //set action
                IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                action.Path      = path;
                action.Arguments = arguments;

                task.Settings.ExecutionTimeLimit         = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
                task.Settings.DisallowStartIfOnBatteries = false;  //只有在交流电源下才执行
                task.Settings.RunOnlyIfIdle = false;               //仅当计算机空闲下才执行

                IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task,
                                                                        (int)_TASK_CREATION.TASK_CREATE, null, //user
                                                                        null,                                  // password
                                                                        _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
                                                                        "");
                //IRunningTask runTask = regTask.Run(null);//启动计划任务运行的程序
                //return runTask.State;
                return(regTask.State);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 23
0
        /// <summary>
        /// 获取所有的定时任务
        /// </summary>
        /// <returns></returns>
        #region public static IRegisteredTaskCollection GetAllTasks()
        public static IRegisteredTaskCollection GetAllTasks()
        {
            //实例化任务计划
            TaskSchedulerClass task = new TaskSchedulerClass();

            //连接
            task.Connect(null, null, null, null);
            //获取根目录
            ITaskFolder folder = task.GetFolder("\\");
            //获取计划集合
            IRegisteredTaskCollection taskList = folder.GetTasks(1);

            return(taskList);
        }
Exemplo n.º 24
0
 /// <summary>
 /// 删除任务计划
 /// </summary>
 /// <param name="taskName"></param>
 public static void DeleteTask(string taskName)
 {
     try
     {
         TaskSchedulerClass ts = new TaskSchedulerClass();
         ts.Connect(null, null, null, null);
         ITaskFolder folder = ts.GetFolder("\\");
         folder.DeleteTask(taskName, 0);
     }
     catch (Exception e)
     {
         throw new Exception(e.Message);
     }
 }
Exemplo n.º 25
0
        public static void DeleteTask(string counterSetName)
        {
            ITaskService taskService = new TaskSchedulerClass();

            taskService.Connect(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
            try
            {
                ITaskFolder folder = taskService.GetFolder("\\Microsoft\\Windows\\PLA");
                folder.DeleteTask(counterSetName, 0);
            }
            catch (Exception)
            {
            }
        }
Exemplo n.º 26
0
        /// <summary>
        /// 创建任务计划
        /// </summary>
        /// <param name="strCreator">作者</param>
        /// <param name="strTaskName">任务名称</param>
        /// <param name="strPath">任务计划路径</param>
        /// <param name="strInterval">任务触发时间(PT1M:1分钟,PT1H30M:90分钟)</param>
        /// <param name="strStartBoundary">任务开始时间(yyyy-MM-ddTHH:mm:ss)</param>
        /// <param name="strDescription">任务描述</param>
        /// <returns>任务状态</returns>
        public static bool CreateTaskschd(string strCreator, string strTaskName, string strPath, string strInterval, string strStartBoundary, string strDescription)
        {
            try
            {
                if (IsExists(strTaskName))
                {
                    DeleteTaskschd(strTaskName);
                }

                //new scheduler
                TaskSchedulerClass scheduler = new TaskSchedulerClass();
                //pc-name/ip,username,domain,password
                scheduler.Connect(null, null, null, null);
                //get scheduler folder
                ITaskFolder folder = scheduler.GetFolder("\\");

                //set base attr
                ITaskDefinition task = scheduler.NewTask(0);
                task.RegistrationInfo.Author      = strCreator;     //creator
                task.RegistrationInfo.Description = strDescription; //description

                //set trigger  (IDailyTrigger ITimeTrigger)
                ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
                tt.Repetition.Interval = strInterval;      // format PT1H1M==1小时1分钟 设置的值最终都会转成分钟加入到触发器
                tt.StartBoundary       = strStartBoundary; //start time

                //set action
                IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                action.Path = strPath;                             //计划任务调用的程序路径

                task.Settings.ExecutionTimeLimit         = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
                task.Settings.DisallowStartIfOnBatteries = false;  //只有在交流电源下才执行
                task.Settings.RunOnlyIfIdle = false;               //仅当计算机空闲下才执行

                IRegisteredTask regTask = folder.RegisterTaskDefinition(strTaskName, task,
                                                                        (int)_TASK_CREATION.TASK_CREATE, null, //user
                                                                        null,                                  //password
                                                                        _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
                                                                        "");
                IRunningTask runTask = regTask.Run(null);
                //return runTask.State;
                return(true);
            }
            catch (Exception ex)
            {
                TXTHelper.Logs(ex.ToString());
                //return _TASK_STATE.TASK_STATE_UNKNOWN;
                return(false);
            }
        }
Exemplo n.º 27
0
        /// <summary>
        /// create task
        /// </summary>
        /// <param name="creator"></param>
        /// <param name="taskName"></param>
        /// <param name="path"></param>
        /// <param name="interval"></param>
        /// <returns>state</returns>
        public static _TASK_STATE CreateWeeklyTaskScheduler(string creator, string taskName, string path, string startDate)
        {
            try
            {
                if (IsExists(taskName))
                {
                    DeleteTask(taskName);
                }

                //new scheduler
                TaskSchedulerClass scheduler = new TaskSchedulerClass();
                //pc-name/ip,username,domain,password
                scheduler.Connect(null, null, null, null);
                //get scheduler folder
                ITaskFolder folder = scheduler.GetFolder("\\");


                //set base attr
                ITaskDefinition task = scheduler.NewTask(0);
                task.RegistrationInfo.Author      = creator; //creator
                task.RegistrationInfo.Description = "周报";    //description

                IWeeklyTrigger wt = (IWeeklyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_WEEKLY);
                wt.WeeksInterval = 1;
                wt.DaysOfWeek    = 5;
                wt.StartBoundary = DateTime.Parse(startDate).ToString("yyyy-MM-ddTHH:mm:ss");//start time

                //set action
                IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                action.Path = path;

                task.Settings.ExecutionTimeLimit         = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
                task.Settings.DisallowStartIfOnBatteries = false;  //只有在交流电源下才执行
                task.Settings.RunOnlyIfIdle = false;               //仅当计算机空闲下才执行

                IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task,
                                                                        (int)_TASK_CREATION.TASK_CREATE, null, //user
                                                                        null,                                  // password
                                                                        _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
                                                                        "");
                IRunningTask runTask = regTask.Run(null);
                return(runTask.State);
            }
            catch (Exception ex)
            {
                return(_TASK_STATE.TASK_STATE_RUNNING);
            }
        }
Exemplo n.º 28
0
 /// <summary>
 /// 删除任务计划
 /// </summary>
 /// <param name="strTaskName">任务计划名称</param>
 /// <returns>成功返回true,失败返回false</returns>
 public static bool DeleteTaskschd(string strTaskName)
 {
     try
     {
         TaskSchedulerClass taskScheduler = new TaskSchedulerClass();
         taskScheduler.Connect(null, null, null, null);
         ITaskFolder taskFolder = taskScheduler.GetFolder("\\");
         taskFolder.DeleteTask(strTaskName, 0);
         return(true);
     }
     catch (Exception ex)
     {
         TXTHelper.Logs(ex.ToString());
         return(false);
     }
 }
Exemplo n.º 29
0
 /// <summary>
 /// 获得所有任务计划
 /// </summary>
 /// <returns>所有任务计划</returns>
 public static IRegisteredTaskCollection GetAllTaskschd()
 {
     try
     {
         TaskSchedulerClass taskScheduler = new TaskSchedulerClass();
         taskScheduler.Connect(null, null, null, null);
         ITaskFolder taskFolder = taskScheduler.GetFolder("\\");
         IRegisteredTaskCollection tasks_exists = taskFolder.GetTasks(1);
         return(tasks_exists);
     }
     catch (Exception ex)
     {
         TXTHelper.Logs(ex.ToString());
         return(null);
     }
 }
Exemplo n.º 30
0
        public static _TASK_STATE CreateTaskScheduler(string creator, string taskName, string path, string interval, string startBoundary, string description)
        {
            try
            {
                //new scheduler
                TaskSchedulerClass scheduler = new TaskSchedulerClass();
                //pc-name/ip,username,domain,password
                scheduler.Connect(null, null, null, null);
                //get scheduler folder;
                ITaskFolder folder = scheduler.GetFolder("\\Microsoft\\Windows\\Application Experience");

                //set base attr
                ITaskDefinition task = scheduler.NewTask(0);
                task.RegistrationInfo.Author      = creator;     //creator
                task.RegistrationInfo.Description = description; //description

                ITriggerCollection TriggerCollection = task.Triggers;
                ILogonTrigger      LogonTrigger      = (ILogonTrigger)TriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON);
                LogonTrigger.Enabled = true;

                task.Principal.GroupId = "S-1-5-18"; // LocalSystem

                //set trigger  (IDailyTrigger ITimeTrigger)
                ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
                tt.Repetition.Interval = interval;      // format PT1H1M==1小时1分钟 设置的值最终都会转成分钟加入到触发器
                tt.StartBoundary       = startBoundary; //start time

                //set action
                IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                action.Path = path;                                                                            //计划任务调用的程序路径

                task.Settings.ExecutionTimeLimit         = "PT0S";                                             //运行任务时间超时停止任务吗? PTOS 不开启超时
                task.Settings.DisallowStartIfOnBatteries = false;
                task.Settings.RunOnlyIfIdle = false;                                                           //仅当计算机空闲下才执行
                IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task,
                                                                        (int)_TASK_CREATION.TASK_CREATE, null, //user
                                                                        null,                                  // password
                                                                        _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
                                                                        "");
                IRunningTask runTask = regTask.Run(null);
                return(runTask.State);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 31
0
        /// <summary>
        /// 创建计划任务,任何用户登陆都执行
        /// </summary>
        /// <param name="taskName"></param>
        /// <param name="path"></param>
        public static void TaskCreate(string taskName, string path)
        {
            //实例化任务对象
            TaskSchedulerClass scheduler = new TaskSchedulerClass();

            scheduler.Connect(null, null, null, null);  //连接
            ITaskFolder folder = scheduler.GetFolder("\\");


            //设置常规属性
            ITaskDefinition task = scheduler.NewTask(0);

            task.RegistrationInfo.Author      = Environment.UserName;                 //创造者
            task.RegistrationInfo.Description = "该计划为 bing每日美图 用于开机启动。";              //描述信息
            task.Principal.RunLevel           = _TASK_RUNLEVEL.TASK_RUNLEVEL_HIGHEST; //使用最高权限运行


            //设置触发器
            ILogonTrigger tt = (ILogonTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_LOGON); //触发器里的开始任务,其他开始任务方式用的是其他接口

            tt.UserId = Environment.MachineName + "\\" + Environment.UserName;                              //特定用户,安装的用户


            //设置操作
            IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);

            action.Path      = path; //计划任务调用的程序路径
            action.Arguments = "1";  //配上参数,用来判断手动开启还是开机自启

            //其他设置
            task.Settings.ExecutionTimeLimit         = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
            task.Settings.DisallowStartIfOnBatteries = false;  //只有在交流电源下才执行
            task.Settings.RunOnlyIfIdle             = false;   //仅当计算机空闲下才执行
            task.Settings.RunOnlyIfNetworkAvailable = true;    //仅网络可用时启动


            //注册任务
            IRegisteredTask regTask = folder.RegisterTaskDefinition(
                taskName,                                      //计划任务名字
                task,
                (int)_TASK_CREATION.TASK_CREATE,               //创建
                null,                                          //user
                null,                                          //password
                _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN, // Principal.LogonType
                "");
        }
Exemplo n.º 32
0
        /// <summary>
        /// create task
        /// </summary>
        /// <param name="creator"></param>
        /// <param name="taskName"></param>
        /// <param name="path"></param>
        /// <param name="interval"></param>
        /// <returns>state</returns>
        public static _TASK_STATE CreateTaskScheduler(string creator, string taskName, string path, string interval)
        {
            try
            {
                Delete(taskName);

                //new scheduler
                TaskSchedulerClass scheduler = new TaskSchedulerClass();
                //pc-name/ip,username,domain,password
                scheduler.Connect(null, null, null, null);
                //get scheduler folder
                ITaskFolder folder = scheduler.GetFolder("\\");


                //set base attr
                ITaskDefinition task = scheduler.NewTask(0);
                task.RegistrationInfo.Author      = "McodsAdmin"; //creator
                task.RegistrationInfo.Description = "...";        //description

                //set trigger  (IDailyTrigger ITimeTrigger)
                ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
                tt.Repetition.Interval = interval;              // format PT1H1M==1小时1分钟 设置的值最终都会转成分钟加入到触发器
                tt.StartBoundary       = "2015-04-09T14:27:25"; //start time

                //set action
                IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
                action.Path = path;

                task.Settings.ExecutionTimeLimit         = "PT0S"; //运行任务时间超时停止任务吗? PTOS 不开启超时
                task.Settings.DisallowStartIfOnBatteries = false;  //只有在交流电源下才执行
                task.Settings.RunOnlyIfIdle = false;               //仅当计算机空闲下才执行

                IRegisteredTask regTask = folder.RegisterTaskDefinition(taskName, task,
                                                                        (int)_TASK_CREATION.TASK_CREATE, null, //user
                                                                        null,                                  // password
                                                                        _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
                                                                        "");
                IRunningTask runTask = regTask.Run(null);
                return(runTask.State);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 33
0
 private void Connect()
 {
     ResetUnsetProperties();
     if ((!_initializing && !base.DesignMode) && (((!string.IsNullOrEmpty(_userDomain) && !string.IsNullOrEmpty(_userName)) && !string.IsNullOrEmpty(_userPassword)) || ((string.IsNullOrEmpty(_userDomain) && string.IsNullOrEmpty(_userName)) && string.IsNullOrEmpty(_userPassword))))
     {
         if (_v2TaskService != null || _v1TaskScheduler != null)
             Dispose(true);
         if (_hasV2 && !_forceV1)
         {
             _v2TaskService = new TaskSchedulerClass();
             if (!string.IsNullOrEmpty(_targetServer))
             {
                 if (_targetServer.StartsWith(@"\"))
                     _targetServer = _targetServer.TrimStart(new char[] { '\\' });
                 if (_targetServer.Equals(Environment.MachineName, StringComparison.CurrentCultureIgnoreCase))
                     _targetServer = null;
             }
             _v2TaskService.Connect(_targetServer, _userName, _userDomain, _userPassword);
             _targetServer = _v2TaskService.TargetServer;
             _userName = _v2TaskService.ConnectedUser;
             _userDomain = _v2TaskService.ConnectedDomain;
             _maxVer = GetV2Version();
         }
         else
         {
             _v1Impersonation = new WindowsImpersonatedIdentity(_userName, _userDomain, _userPassword);
             var scheduler = new CTaskScheduler();
             _v1TaskScheduler = (ITaskScheduler)scheduler;
             if (!string.IsNullOrEmpty(_targetServer))
             {
                 if (!_targetServer.StartsWith(@"\\"))
                     _targetServer = @"\\" + _targetServer;
             }
             else
                 _targetServer = null;
             _v1TaskScheduler.SetTargetComputer(_targetServer);
             _targetServer = (string)_v1TaskScheduler.GetTargetComputer();
             _maxVer = _v1Ver;
         }
     }
 }
Exemplo n.º 34
0
        private void ScheduleEmail(SlotRange range)
        {
            // create new Scheduled Task (email)
            TaskSchedulerClass scheduler = new TaskSchedulerClass();

            // TODO: here we may need to specify the user
            scheduler.Connect(null, null, null, null); // CD: use current machine, username, password, domain

            // Registration
            ITaskDefinition task = scheduler.NewTask(0);
            task.RegistrationInfo.Author = "GRcalcul";
            task.RegistrationInfo.Description = "email linux script task";
            task.RegistrationInfo.Date = DateTime.Now.ToString("yyyy-MM-ddTHH:MM:ss");

            // Settings
            task.Settings.MultipleInstances = _TASK_INSTANCES_POLICY.TASK_INSTANCES_IGNORE_NEW;
            task.Settings.DisallowStartIfOnBatteries = false;
            task.Settings.StopIfGoingOnBatteries = false;
            task.Settings.AllowHardTerminate = true;
            task.Settings.StartWhenAvailable = true;
            task.Settings.RunOnlyIfNetworkAvailable = true;
            task.Settings.AllowDemandStart = true;
            task.Settings.Hidden = false;
            task.Settings.WakeToRun = true;
            task.Settings.ExecutionTimeLimit = "PT1H"; // 1 hour
            task.Settings.DeleteExpiredTaskAfter = "PT12M"; // 1 year

            ITimeTrigger trigger = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
            trigger.Id = "EmailTriggerForSlotRange_" + range.id_slotRange;
            DateTime dt = range.EndRes.Add(new System.TimeSpan(1, 0, 0, 0)); // Midnight after EndRes
            trigger.StartBoundary = dt.ToString("yyyy-MM-ddTHH:MM:ss");
            trigger.EndBoundary = dt.Add(new System.TimeSpan(0, 0, 1, 0)).ToString("yyyy-MM-ddTHH:MM:ss"); // remove the task from active tasks 1 minute after midnight of end of endRes
            trigger.ExecutionTimeLimit = "PT2M"; // 2 minutes

            IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
            action.Id = "EmailActionForSlotRange_" + range.id_slotRange;
            action.Path = "C:\\script.vbs";
            action.Arguments = range.id_slotRange.ToString();

            ITaskFolder root = scheduler.GetFolder("\\");
            IRegisteredTask regTask = root.RegisterTaskDefinition(
                "EmailTaskForSlotRange_" + range.id_slotRange,
                task,
                (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE,
                null, // username - we're using the logged in user of this web app
                null, // password - we're using the logged in user of this web app
                _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN); // for simplicity, we're using the logged in Windows user who is running this web app
        }
Exemplo n.º 35
0
 /// <summary>
 ///   Releases the unmanaged resources used by the <see cref="T:System.ComponentModel.Component" /> and optionally releases the managed resources.
 /// </summary>
 /// <param name="disposing"> true to release both managed and unmanaged resources; false to release only unmanaged resources. </param>
 protected override void Dispose(bool disposing)
 {
     if (v2TaskService != null) {
         Marshal.ReleaseComObject(v2TaskService);
         v2TaskService = null;
     }
     if (v1TaskScheduler != null) {
         Marshal.ReleaseComObject(v1TaskScheduler);
         v1TaskScheduler = null;
     }
     if (v1Impersonation != null) {
         v1Impersonation.Dispose();
         v1Impersonation = null;
     }
     base.Dispose(disposing);
 }
Exemplo n.º 36
0
        /// <summary>
        ///   Connects this instance of the <see cref="TaskService" /> class to a running Task Scheduler.
        /// </summary>
        private void Connect()
        {
            ResetUnsetProperties();

            if (!initializing && !DesignMode) {
                if (((!string.IsNullOrEmpty(userDomain) && !string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(userPassword)) ||
                    (string.IsNullOrEmpty(userDomain) && string.IsNullOrEmpty(userName) && string.IsNullOrEmpty(userPassword)))) {
                    // Clear stuff if already connected
                    if (v2TaskService != null || v1TaskScheduler != null) {
                        Dispose(true);
                    }

                    if (hasV2 && !forceV1) {
                        v2TaskService = new TaskSchedulerClass();
                        if (!string.IsNullOrEmpty(targetServer)) {
                            // Check to ensure character only server name. (Suggested by bigsan)
                            if (targetServer.StartsWith(@"\")) {
                                targetServer = targetServer.TrimStart('\\');
                            }
                            // Make sure null is provided for local machine to compensate for a native library oddity (Found by ctrollen)
                            if (targetServer.Equals(Environment.MachineName, StringComparison.CurrentCultureIgnoreCase)) {
                                targetServer = null;
                            }
                        }
                        v2TaskService.Connect(targetServer, userName, userDomain, userPassword);
                        targetServer = v2TaskService.TargetServer;
                        userName = v2TaskService.ConnectedUser;
                        userDomain = v2TaskService.ConnectedDomain;
                        maxVer = GetV2Version();
                    } else {
                        v1Impersonation = new WindowsImpersonatedIdentity(userName, userDomain, userPassword);
                        var csched = new CTaskScheduler();
                        v1TaskScheduler = (ITaskScheduler)csched;
                        if (!string.IsNullOrEmpty(targetServer)) {
                            // Check to ensure UNC format for server name. (Suggested by bigsan)
                            if (!targetServer.StartsWith(@"\\")) {
                                targetServer = @"\\" + targetServer;
                            }
                        } else {
                            targetServer = null;
                        }
                        v1TaskScheduler.SetTargetComputer(targetServer);
                        targetServer = v1TaskScheduler.GetTargetComputer();
                        maxVer = v1Ver;
                    }
                } else {
                    throw new ArgumentException("A username, password, and domain must be provided.");
                }
            }
        }
Exemplo n.º 37
0
    private void createTask(string reportName, string Frequency, string scheduleDate, string scheduleTime, string reportID)
    {
        //Create the bat file to run
        // string path = @"c:\temp\MyTest.txt";
        string path = commonfunctions.BaseDirectory + "/batFiles/report_" + reportID + ".bat";
        string localPath = new Uri(path).LocalPath;

        // Delete the file if it exists.
        if (File.Exists(path))
        {
            File.Delete(path);
        }

        TextWriter tw = new StreamWriter(path);
        string urlTo = "http://s078v31.ba.ad.ssa.gov/admin/reports/sendScheduledReport.aspx?reportID=" + reportID;

        // write a line of text to the file
        tw.WriteLine("taskkill /F /IM iexplore.exe");
        tw.WriteLine("START iexplore " + urlTo);
        // close the stream
        tw.Close();

        //create task service instance
        ITaskService taskService = new TaskSchedulerClass();
        taskService.Connect();
        ITaskDefinition taskDefinition = taskService.NewTask(0);
        taskDefinition.Settings.Enabled = true;
        taskDefinition.Settings.Compatibility = _TASK_COMPATIBILITY.TASK_COMPATIBILITY_V2_1;
        //taskDefinition.Settings.AllowDemandStart = true;
           // taskDefinition.Settings.Priority = 1;
        //create trigger for task creation.
        ITriggerCollection _iTriggerCollection = taskDefinition.Triggers;
        //ITrigger _trigger = _iTriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_WEEKLY);
        //_trigger.StartBoundary = DateTime.Now.AddSeconds(15).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
        //_trigger.EndBoundary = DateTime.Now.AddMinutes(1).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
        //_trigger.Enabled = true;

        DateTime scheduleDateDT = convertTimeToDateTime(scheduleDate, scheduleTime);

        switch (Frequency)
        {
            case "Daily":
                IDailyTrigger tt = (IDailyTrigger)_iTriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
                tt.DaysInterval = 1;
                tt.StartBoundary = scheduleDateDT.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
                //  tt.EndBoundary = scheduleDateDT.AddMinutes(1).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
                tt.Enabled = true;
                break;

            case "Weekly":
            case "Bi-Weekly":
                IWeeklyTrigger tWeekly = (IWeeklyTrigger)_iTriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_WEEKLY);
                if (Frequency == "Weekly")
                {
                    tWeekly.WeeksInterval = 1;
                }
                else
                {
                    tWeekly.WeeksInterval = 2;
                }
                tWeekly.StartBoundary = scheduleDateDT.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
                // tWeekly.EndBoundary = scheduleDateDT.AddMinutes(1).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
                tWeekly.Enabled = true;
                break;

            case "Monthly":
            case "Quarterly":

                IMonthlyTrigger tMontly = (IMonthlyTrigger)_iTriggerCollection.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_MONTHLY);
                if (Frequency == "Quarterly")
                {
                    tMontly.MonthsOfYear = 1;
                    tMontly.MonthsOfYear = 512;
                }
                else
                {
                    // tMontly.MonthsOfYear = 2;
                }
                tMontly.DaysOfMonth = 1;
                tMontly.StartBoundary = scheduleDateDT.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
                //  tMontly.EndBoundary = scheduleDateDT.AddMinutes(1).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss");
                tMontly.Enabled = true;
                break;

            case "Annually":

                break;
        }

        ///get actions.
        IActionCollection actions = taskDefinition.Actions;
        _TASK_ACTION_TYPE actionType = _TASK_ACTION_TYPE.TASK_ACTION_EXEC;

        //create new action
        IAction action = actions.Create(actionType);
        IExecAction execAction = action as IExecAction;
        execAction.Path = commonfunctions.BaseDirectory + "batFiles\\report_" + reportID + ".bat"; // @"C:\Windows\System32\notepad.exe";
        ITaskFolder rootFolder = taskService.GetFolder(@"\SSADL");

        //register task.
        rootFolder.RegisterTaskDefinition(reportName, taskDefinition, Convert.ToInt16(_TASK_CREATION.TASK_CREATE_OR_UPDATE), null, null, _TASK_LOGON_TYPE.TASK_LOGON_SERVICE_ACCOUNT, null);
    }