整理自己用到的用.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(); }