.net - schtasks.exe 与 ITaskScheduler

标签 .net scheduled-tasks

我正在尝试编写一些代码来在机器上自动“配置”一堆计划任务。该程序将读取一个 XML 文件,然后根据 XML 文件中的信息“配置”任务的运行时间等。

这个想法应该是程序可以在机器上“运行”多次并自动“添加/删除”任何有效的更改。我想要这样做的方式如下:

  1. 所有任务都将带有一些特殊的“前缀”。当程序运行时,它会“删除”所有具有该前缀的任务,因为可以假定这些任务是由具有不同的早期配置的程序运行的。

  2. 程序然后“创建”新任务。

所以我的“配置”程序需要能够

  1. 获取机器上所有现有计划任务的列表
  2. 按名称删除任务
  3. 按名称创建新任务

如果能用C#写程序就最简单了。

似乎有两种方法可以做到这一点:

  1. C# 程序使用适当的命令行参数显式运行“schtasks.exe”程序。它“读取”并解析 schtasks.exe 的输出以获取现有任务的列表,以便它可以删除它们。然后再次运行 schtasks.exe 以创建新任务。

  2. 通过 .NET COM 包装器使用 ITaskManager 接口(interface)以编程方式查询和安排任务。

我更愿意选择 #2,但我怀疑这是“较旧”的功能 - 我在网络上可以找到的内容表明自 Windows NT 以来任务管理器功能得到了改进。

schtasks.exe 只是一个写在 ITaskManager COM 接口(interface)之上的命令行工具吗?或者是否有 schtasks.exe 可以执行而 ITaskManager 界面不能执行的操作?

ITaskManager 接口(interface)/COM 组件是否在计划任务文件夹中生成“.job”文件?

最佳答案

Windows Vista 中引入了新的 Task Scheduler 2.0,您可以使用 ITaskService 接口(interface)访问它。我相信 Schtasks.exe 是基于该 API 构建的。

为了向后兼容,TS 1.0 ITaskScheduler API 仍然有效。因此,使用哪一个取决于您需要定位的操作系统版本以及您是否需要 TS 2.0 的新功能。

关于.net - schtasks.exe 与 ITaskScheduler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1477088/

相关文章:

linux - 为什么我们需要 linux 中的 swapper 任务?

cron - 如何安排 Google Compute Engine 仅在特定时间开启

c# - 如何测试 web.config 中的自定义配置部分?

swift - Vapor 4 与 Heroku 的预定工作

scheduled-tasks - 在 SSMS 17.6 中创建维护计划后,SSMS 在尝试安排任务运行时自动重新启动

windows - GetScheduledTaskInfo NextRunTime 错误

c# - 如何在 C# 中访问属性或 const 的 Description 属性?

c# - 表单类,在简单的代码测试中不断得到 "System.StackOverflowException"

c# - .NET 紧凑型框架 - 条码扫描仪

java - 在 OCR(光学字符识别)之前,您会推荐什么软件进行图像增强?