写点什么

在 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:083006
用户头像

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

关注

评论

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

在小红书认识不到一周,我和TA成为了同事

用友BIP

智能招聘

预发部署时机器总是重启两次的“简单”排查

阿里技术

部署 故障排查 排查 预发 重启

主流的第三方直播SDK对比(腾讯云、即构、阿里云、声网、网易云信、网宿)

音视频开发_AIZ

实时音视频 直播技术 SDK测试 音视频开发 直播间

观测云产品更新 | 监控、图表、服务管理、单点登录、Pipeline 等优化

观测云

数据库 pipeline 单点登录

利用 Kubernetes 降本增效?EasyMR 基于 Kubernetes 部署的探索实践

袋鼠云数栈

Kubernetes 运维 集群管理

如何基于亚马逊云科技打造高性能的 SQL 向量数据库 MyScale

亚马逊云科技 (Amazon Web Services)

机器学习 深度学习 存储 Amazon EC2 向量数据库

【Spring Cloud 】基于微服务架构的智慧工地云平台源码带APP

源码星辰

智慧工地 智慧工地云平台

编程和数学计算软件MATLAB R2023b for Mac v23.2.0

展初云

matlab Mac软件 MATLAB R2023b

异构集成:财务共享如何成为数据聚合、分发的控制枢纽

用友BIP

财务共享

OmniGraffle Pro 7 for mac(绘图软件)

展初云

Mac OmniGraffle Pro 专业绘图软件

CPU 程序性能优化

MegEngineBot

性能优化 cpu 硬件 编译器

InDesign 2024 for mac(页面设计和版面应用程序)

展初云

adobe Mac软件 InDesign 2024 下载 InDesign

关于圆通物流在AppLink上的操作

RestCloud

APPlink

基于数据中台的过程看板助力光伏单晶行业管理提升

用友BIP

数据中台

四载磨砺,一群青年“识瘤者”以AI助力医疗创新

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 先锋开发者云上说

如何用AB测试完善产品激励体系

字节跳动数据平台

大数据 A/B 测试 对比实验

陈长城:NineData面向Doris实时数仓集成的技术实践

NineData

数据库 实时数仓 Doris 玖章算术 NineData

The Foundry Nuke 15 for Mac(电影特效合成软件)

展初云

Mac nuke 特效合成软件

数据库大事记

小齐写代码

如何充分压榨一台EC2

申屠鹏会

利用ETLCloud自动化流程实现业务系统数据快速同步至数仓

RestCloud

ETL

SCSS 进阶之道:探索更多样式表达的可能性

伤感汤姆布利柏

aiohttp - Python 异步 HTTP 客户端库入门教程

Liam

Python 编程 程序员 后端 aiohttp

什么是软件定制开发?|app网站小程序定制

Geek_16d138

网站建设 app定制开发 软件定制开发

学习指南:如何快速上手媒体生态一致体验开发

HarmonyOS开发者

HarmonyOS

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