免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

在 Vista 和 Windows Server 2008 中使用计划任务程序

  • 2008-03-02
  • 本文字数:1724 字

    阅读完需:约 6 分钟

计划任务程序是 Windows Vista 以及即将发布的 Windows Server 2008 中一个很有用的附件。本文是一篇快速教程,讲解了如何在托管代码中使用计划任务程序。若要了解更多的详细解释,敬请访问 Bart De Smet 相应的博客文章

Windows Vista 与即将发布的 Windows Server 2008 提供了一种可能,就是能够创建复杂的任务,使得它们可以在不同时刻及时运行。它还提供了一个很棒的特性,可以通过托管代码访问嵌入到操作系统中的计划任务程序的功能。首先,创建一个 C#控制台应用程序,然后从 System32 文件夹中导入 taskschd.dll 文件。它将会创建计划任务程序的 COM 互操作程序集。然后,像这样创建一个 TaskSchedulerClass 对象:

TaskSchedulerClass scheduler = new TaskSchedulerClass();

接下来连接 scheduler 对象:

TaskSchedulerClass scheduler = new TaskSchedulerClass();
scheduler.Connect(null, null, null, null);

下一步是创建一个任务,并设置它具有的大量属性:

ITaskDefinition task = scheduler.NewTask(0);
task.RegistrationInfo.Author = “Author”;
task.RegistrationInfo.Description = “New Task”;
task.Settings.RunOnlyIfIdle = true;

下面是选择任务应该启动的时刻。方法就是通过触发器。我们的范例使用了一个每日触发的触发器,如下所示:

IDailyTrigger trigger = (IDailyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
trigger.Id = “DailyTrigger”;
trigger.StartBoundary = “2008-01-01T12:00:00”;
trigger.EndBoundary = “2008-01-31T12:00:00”;

当触发器中设置的条件满足要求时,任务就会运行。但是必须定义动作(action),否则任务什么都不会做。这是一个范例:

IEmailAction action = (IEmailAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_SEND_EMAIL);
action.Id = “Email action”;
action.Server = “server…”;
action.From = “sender…”;
action.To = “recipient…”;
action.Subject = “The subject of the email…”;
action.Body = “The body text of the email…”;

该任务几乎随时可以使用,仅仅需要对其进行注册。

ITaskFolder folder = scheduler.GetFolder("\\Task");
IRegisteredTask regTask = folder.RegisterTaskDefinition(
“Test”,
task,
(int)_TASK_CREATION.TASK_CREATE_OR_UPDATE,
null, //user
null, // password
_TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
“”);

任务一旦完成并被注册,就能够立即运行,如下所示,或者使用“schtasks /run”。

IRunningTask runTask = regTask.Run(null);

将这些代码集中在一起,则结果为:

using System;
using System.Collections.Generic;
using System.Text;

namespace TaskScheduler {
class Program {
static void Main (string[] args) {
TaskSchedulerClass scheduler = new TaskSchedulerClass();
scheduler.Connect(null, null, null, null);

ITaskDefinition task = scheduler.NewTask(0);
task.RegistrationInfo.Author = “Author”;
task.RegistrationInfo.Description = “New Task”;
task.Settings.RunOnlyIfIdle = true;

IDailyTrigger trigger = (IDailyTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_DAILY);
trigger.Id = “DailyTrigger”;
trigger.StartBoundary = “2008-01-01T12:00:00”;
trigger.EndBoundary = “2008-01-31T12:00:00”;

IEmailAction action = (IEmailAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_SEND_EMAIL);
action.Id = “Email action”;
action.Server = “server…”;
action.From = “sender…”;
action.To = “recipient…”;
action.Subject = “The subject of the email…”;
action.Body = “The body text of the email…”;

ITaskFolder folder = scheduler.GetFolder("\\Task");
IRegisteredTask regTask = folder.RegisterTaskDefinition(
“Test”,
task,
(int)_TASK_CREATION.TASK_CREATE_OR_UPDATE,
null, //user
null, // password
_TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
“”);

IRunningTask runTask = regTask.Run(null);
}
}
}

查看英文原文: Using the Task Scheduler in Vista and Windows Server 2008

2008-03-02 01:082731
用户头像

发布了 109 篇内容, 共 40.8 次阅读, 收获喜欢 14 次。

关注

评论

发布
暂无评论
发现更多内容

用数字“钥匙”打开发展新空间

CECBC

架构实战毕业总结

王大胖

SWOOLE高性能内存数据库的使用和配置教程

CRMEB

如何以Sonar为例创建一个适用与所有企业的测试步骤

阿里云云效

阿里云 运维 测试 sonar 研发测试

数字化时代,企业运维面临现状及挑战分析解读

云智慧AIOps社区

大数据 运维 数字化时代 大数据运维

LLVM之父Chris Lattner:编译器的黄金时代

OneFlow

编程语言 编译器 LLVM 加速器 MLIR

海口等保测评公司有几家?具体在哪里?哪里可以查到?

行云管家

网络安全 等保 等保测评 海南 海口

区块链+数字资产,未来财富的新起点

CECBC

解锁OpenHarmony技术日!年度盛会,即将揭幕!

OpenHarmony开发者

OpenHarmony 技术日

游戏+NFT,脱虚向实外的另一可行场景

CECBC

如何选择合适的 Neo4j 版本(2022)

亮小猪

neo4j 图数据库 图算法

阿里云云效研发协同服务相关协议条款 |云效

阿里云云效

云计算 阿里云 运维 研发 研发协同

读书破万“卷”:国民阅读洞察2022

易观分析

阅读 文学

一文读懂PlatoFarm新经济模型以及生态进展

西柚子

一级等保怎么做?要收费吗?等保要求是什么?

行云管家

网络安全 等保 等保2.0 一级等保

索信达获金融街资本1亿元投资

索信达控股

在安卓应用市场上架需要注意什么?

InfoQ IT百科

应用要在AppStore上线,需要满足什么条件?

InfoQ IT百科

APP评测的网站有哪些?

InfoQ IT百科

关于Signal Catcher线程中对线程的理解

北洋

4月月更

Clubhouse为什么不火了?

InfoQ IT百科

万有导航:简洁实用的综合导航网站

小炮

返璞归真,多方安全计算要回归到“安全”的本源考虑

易观分析

多方安全计算

IDEA中Maven依赖下载失败解决方案

爱好编程进阶

Java 面试 后端开发

数字化时代,SaaS软件如何成为国产化替代的轻骑兵?

小炮

Android ANR分析(trace文件的产生流程)

北洋

4月月更

智慧公安二维码定位报警系统开发 移动警务app

a13823115807

B站可以称为中国的YouTube吗?

InfoQ IT百科

终极套娃 2.0|云原生 PaaS 平台的可观测性实践分享

尔达Erda

微服务 云原生 可观测性 经验分享 实践

数据仓库架构演变和建设思路

五分钟学大数据

数据仓库 4月月更

百度云盘好用还是阿里云盘好用?

InfoQ IT百科

在Vista和Windows Server 2008中使用计划任务程序_.NET_Abel Avram_InfoQ精选文章