HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

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

关注

评论

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

软件测试学习笔记丨Charles 安装及证书配置

测试人

软件测试

Nexpose 6.6.268 发布下载,新增功能概览

sysin

漏洞扫描 安全审计 漏洞管理 Nexpose

KubeCon China 回顾|快手的 100% 资源利用率提升:从裸机迁移大规模 Redis 到 Kubernetes

小猿姐

数据库 redis Kubernetes 云原生

Teams电话 中国语音解决方案

cts喜友科技

通信 通讯 云通讯 通信通讯

软件测试学习笔记丨Postman实战练习

测试人

软件测试

面试官:如何实现线程池任务编排?

不在线第一只蜗牛

面试 线程池

ETL数据集成丨MySQL到MySQL的数据迁移实践

RestCloud

MySQL 数据库 数据同步 数据迁移 ETL

云手机能否全面替代传统手机?深入探讨云手机的优缺点

Ogcloud

云手机 海外云手机 云手机海外版 云手机群控 手机群控

淘宝API大全:淘宝商品详情数据接口

tbapi

淘宝商品详情数据接口 淘宝API接口

中国CRM的出路:先做好该做的

ToB行业头条

Cisco ISR 1000 IOS XE 17.15.1a 发布下载,新增功能概览

sysin

Cisco 路由器 思科 ISR IOS XE

KubeBlocks 如何降低管理多种数据库的学习门槛

小猿姐

数据库 云原生 operator kubernete

通过 Python 轻松获取 QQ 游戏排行榜数据:实时查看热门游戏排名

幂简集成

游戏 API

企业出海网络方案,助力TikTok直播

Ogcloud

海外直播专线 tiktok运营 tiktok直播 tiktok直播专线 tiktok直播网络

企业智能之旅(3): 构建智能企业的文化、组织、人才与能力

亚马逊云科技 (Amazon Web Services)

说说唯一ID与CAS|得物技术

得物技术

后端 分布式锁 一致性 无锁 企业号2024年8月PK榜

陶建辉演讲干货分享,AI 时代下的数据预测和数据处理挑战

TDengine

tdengine

Python存储与读写二进制文件

EquatorCoco

Python

Acrobat Pro DC 2021 (Win&Mac) 中文特别版

你的猪会飞吗

mac软件下载 Acrobat Pro DC mac mac破解软件下载

从 Greenplum 到 Databend,数据仓库的开源新选择

Databend

KubeCon China 回顾|在没有专用 Operator 的情况下管理数据库集群

小猿姐

数据库 Kubernetes 云原生

如何在扫码填写信息后,将数据实时推送给指定成员?

草料二维码

PHP 程序员学会了 Go 语言就能唬住面试官吗?

EquatorCoco

php Go

解锁精准电商营销新纪元:深度剖析京东商品详情API数据驱动的营销策略

代码忍者

api 网关 API 测试

携手浙商证券、华锐技术,共话交易技术的创新与应用

非凸科技

企业智能之旅(4): 智能企业为生成式 AI 做好数据准备

亚马逊云科技 (Amazon Web Services)

昇思多维混合分布式并行技术,助力伙伴快速复现Llama 3.1-405B大模型

Geek_2d6073

百度MEG数据开发治理平台-TDS

百度Geek说

数据治理 数据开发 任务调度 #大数据

深入浅出智能体工作流(Agentic workflow)

Botnow

大模型 AIGC 多智能体 企业 AI 应用 AI 智能体

【HDFS】集群出现大量的Under Replicated Blocks

扬_帆_起_航

数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年8月刊

墨天轮

MySQL 数据库 oracle postgresql 国产数据库

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