【问题标题】:schtasks.exe vs ITaskSchedulerschtasks.exe 与 ITaskScheduler
【发布时间】:2010-12-01 09:59:17
【问题描述】:

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

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

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

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

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

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

如果我可以用 C# 编写程序,那将是最简单的。

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

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

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

我更喜欢使用 #2,但我怀疑这是“较旧”的功能 - 我可以在网络上找到的内容表明任务管理器功能自 Windows NT 以来有所改进。

schtasks.exe 是否只是写在 ITaskManager COM 接口之上的命令行工具?或者有没有 schtasks.exe 可以做而 ITaskManager 接口不能做的事情?

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

【问题讨论】:

    标签: .net scheduled-tasks


    【解决方案1】:

    我使用这个库取得了一些成功:http://www.codeproject.com/KB/cs/tsnewlib.aspx

    它似乎在内部使用 ITaskScheduler COM 接口并公开了我需要的功能。

    也感谢 Mattias 的快速回答(赞成)。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-02-12
        • 2011-06-05
        • 2012-04-05
        • 2016-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-14
        • 2016-05-03
        相关资源
        最近更新 更多