[原創].net c#操作windows計划任務程序,新建,運行,停止,啟用,禁用計划任務


整理自己用到的用.net的方法操作windows計划任務程序,整合了一些經常會用到的方法:

代碼如下,DLL和必要的操作都在代碼注釋中:

/// <summary>
        /// 1.引用:C:\Windows\System32\taskschd.dll
        /// 2.屬性:嵌入互操作類型=False
        /// 3.命名空間:using TaskScheduler;
        /// http://msdn.microsoft.com/en-us/library/windows/desktop/aa380751(v=vs.85).aspx
        /// 測試操作計划任務
        /// 獲取,運行,停止,禁用,啟用,新建計划任務。
        /// </summary>
        private static void TestGetTask()
        {
            //1.連接TaskSchedulerClass
            TaskSchedulerClass scheduler = new TaskSchedulerClass();
            scheduler.Connect(
                "",//電腦名或者IP
                "",//用戶名
                "", //域名
                "");//密碼

            //2.獲取計划任務文件夾(參數:選中計划任務后'常規'中的'位置',根文件夾為"\\")
            ITaskFolder folder = scheduler.GetFolder("\\");

            //3.例:獲取名稱為"TaskA"的計划任務
            IRegisteredTask task = folder.GetTask("TaskA");
            //運行(帶參數)
            IRunningTask runningTask = task.Run(null);
            //停止(參數為預留參數,只能填0)
            task.Stop(0);
            //禁用
            task.Enabled = false;
            //啟用
            task.Enabled = true;

            //4.例:修改觸發器         
            ITaskDefinition definition = task.Definition;
            //清除
            definition.Triggers.Clear();
            //添加
            ITrigger trigger = definition.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
            trigger.Id = "DailyTrigger";
            trigger.StartBoundary = "2008-01-01T12:00:00";
            trigger.EndBoundary = "2008-01-31T12:00:00";
            //更新觸發器
            folder.RegisterTaskDefinition("TaskA", definition, (int)_TASK_CREATION.TASK_UPDATE,
                "",//user
                "",//password
                _TASK_LOGON_TYPE.TASK_LOGON_NONE, "");
            
            //5.例:添加計划任務
            ITaskDefinition newTask = scheduler.NewTask(0);
            newTask.RegistrationInfo.Author = "Author";
            newTask.RegistrationInfo.Description = "My New Task";
            newTask.Settings.RunOnlyIfIdle = true;

            IDailyTrigger trigger1 = (IDailyTrigger)newTask.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
            trigger1.Id = "DailyTrigger";
            trigger1.StartBoundary = "2014-01-01T12:00:00";
            trigger1.EndBoundary = "2014-01-31T12:00:00";

            IEmailAction action = (IEmailAction)newTask.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_SEND_EMAIL);
            action.Id = "Email action";
            action.Server = "server...";
            action.From = "sender...";
            action.To = "recipient...";
            action.Subject = "The subject of the email...";
            action.Body = "The body text of the email...";

            IRegisteredTask regTask = folder.RegisterTaskDefinition(
                 "newTask",
                 newTask,
                 (int)_TASK_CREATION.TASK_CREATE_OR_UPDATE,
                 "", //用戶名
                 "", //密碼
                 _TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
                 "");

            IRunningTask runTask = regTask.Run(null);


            Console.ReadLine();
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM