Win7的task schduler功能比windows XP要强,添加的任务类别也比windows XP的多。在Win7里添加的计划任务都以XML格式的文件保存在C:\Windows\System32\Tasks目录下。在Win7里添加一个任务,并为该任务添加一个RunOnce类型的Trigger(TimeTrigger),可以设置该Trigger的repeat的duration为indefinitely,如下图:
该Trigger会repeat到永远,Tasks目录下的该任务对应的XML文件中不会有Duration项。而XP系统里不可以设置repeat到永远(本人试了下,最大值设置到0x196e6a分钟)。
要在程序中通过代码添加计划任务,需要使用com接口进行实现,而Windows的.net类库没有提供对该功能的包装。在网上搜了下,有两个现成包装:
http://www.codeproject.com/KB/cs/tsnewlib.aspx
http://taskscheduler.codeplex.com/
本人使用了codeproject里的代码,支持XP和win7系统,因为使用的com接口是旧的接口。当然也就无法设置RunOnce trigger repeat's duration to indefinitely。
下面是添加一个拥有RunOnce trigger的task。
//Get a ScheduledTasks object for the local computer.
ScheduledTasks st = new ScheduledTasks();
// Create a task
Task t;
try
{
st.DeleteTask("Editer");
t = st.CreateTask("Editer");
}
catch (ArgumentException e)
{
Console.WriteLine("Task name already exists");
return;
}
// Fill in the program info