【发布时间】:2010-12-01 09:59:17
【问题描述】:
我正在尝试编写一些代码来自动“配置”机器上的一堆计划任务。程序将读取一个 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 组件是否在计划任务文件夹中生成“.job”文件?
【问题讨论】:
标签: .net scheduled-tasks