我正在尝试编写一些代码来自动“配置”计算机上的一堆计划任务。程序将读取XML文件,然后根据XML文件中的信息“配置”任务的运行时间等。
这个想法应该是程序可以在机器上多次“运行”并自动“添加/删除”任何有效的更改。我想要这样做的方式如下:
将使用一些特殊的“前缀”创建所有任务。当程序运行时,它会“删除”具有该前缀的所有任务,因为可以假定它们已由具有不同早期配置的程序运行。
然后程序“创建”新任务。
所以我的“配置”程序需要能够
如果我能用C#编写程序,那将是最简单的。
我似乎有两种方法可以做到这一点:
C#程序使用适当的命令行参数显式运行“schtasks.exe”程序。它“读取”并解析schtasks.exe的输出以获取现有任务的列表,以便它可以删除它们。然后再次运行schtasks.exe以创建新任务。
通过.NET COM包装器使用ITaskManager接口以编程方式查询和安排任务。
我更愿意选择#2,但我怀疑这是“更老”的功能 - 我在网上可以找到的内容暗示自Windows NT以来任务管理器功能有所改进。
schtasks.exe只是在ITaskManager COM接口上编写的命令行工具吗?或者有什么schtasks.exe可以做的事情,ITaskManager接口没有?
ITaskManager接口/ COM组件是否在Scheduled tasks文件夹中生成“.job”文件?
答案 0 :(得分:2)
Windows Vista中引入了新的Task Scheduler 2.0,您可以使用ITaskService接口来访问它。我相信Schtasks.exe是基于该API构建的。
为了向后兼容,TS 1.0 ITaskScheduler API仍然有效。那么使用哪一个取决于您需要定位的操作系统版本以及是否需要TS 2.0的新功能。
答案 1 :(得分:2)
我使用此库取得了一些成功:http://www.codeproject.com/KB/cs/tsnewlib.aspx
它似乎在内部使用ITaskScheduler COM接口并公开了我需要的功能。
感谢Mattias的快速回答(upvoted)。