Microsoft.Win32.TaskScheduler 使用

准备工作
复制C:\Windows\System32\taskschd.dll到项目下,添加引用,在属性窗口将“嵌入互操作类型”设置成false

查看系统下所有的任务计划程序
TaskSchedulerClass ts = new TaskSchedulerClass();
ts.Connect(null, null, null, null);
ITaskFolder folder = ts.GetFolder("\");
IRegisteredTaskCollection tasks_exists = folder.GetTasks(1);
for (int i = 1; i <= tasks_exists.Count; i++)
{
IRegisteredTask t = tasks_exists[i];
}

注意下标是从1开始的。这样就遍历了所有的计划任务,可以依次查看它们的各个属性。如果你想创建什么样的计划任务,不妨先手动创建一个,再用这段代码查看,这样就知道该设置什么属性了
创建自定义任务计划程序

1.实例化对象
//实例化任务对象
TaskSchedulerClass scheduler = new TaskSchedulerClass();
scheduler.Connect(null, null, null, null);//连接
注:只有Connect之后才能使用

2.设置基本属性

ITaskDefinition task = scheduler.NewTask(0);
task.RegistrationInfo.Author = “BluceYoung”;//创建者
task.RegistrationInfo.Description = “http://blog.csdn.net/bluceyoung”;//描述

3.设置触发器
触发器有很多种,这个在手动创建计划任务的时候就会发现,如下图
在这里插入图片描述

当然最常用的就是按时间触发,每隔几天或每个几个月的触发器用IDailyTrigger,网上的很多都是以这个为例。我在这里就拿ITimerTrigger做个例子,能实现几分钟就触发一次的效果。

ITimeTrigger tt = (ITimeTrigger)task.Triggers.Create(_TASK_TRIGGER_TYPE2.TASK_TRIGGER_TIME);
tt.Repetition.Interval = “PT30M”;//循环时间
tt.StartBoundary = “2013-01-21T14:27:25”;//开始执行时间

Interval属性
就是设置的循环时间,但并不是我们熟悉的毫秒数。它的值需要满足“PT1H1M”的格式,就是几小时几分钟执行一次,这个值对应的是触发器对话框的“重复任务间隔”如下图:
在这里插入图片描述

设置的值最终都会转换成分钟加入到触发器

官方解释:

The amount of time between each restart of the task. The format for this string is PDTHMS (for example, “PT5M” is 5 minutes, “PT1H” is 1 hour, and “PT20M” is 20 minutes). The maximum time allowed is 31 days, and the minimum time allowed is 1 minute.

StartBoundary属性
开始执行时间,最常用的格式就是:2005-10-11T13:21:17。官方解释如下:

The date and time must be in the following format: YYYY-MM-DDTHH:MM:SS(±)HH:MM. The (±)HH:MM section of the format defines a certain number of hours and minutes ahead or behind Coordinated Universal Time (UTC). For example the date October 11th, 2005 at 1:21:17 with an offset of eight hours behind UTC would be written as 2005-10-11T13:21:17-08:00. If Z is specified for the UTC offset (for example, 2005-10-11T13:21:17Z), then the no offset from UTC will be used. If you do not specify any offset time or Z for the offset (for example, 2005-10-11T13:21:17), then the time zone and daylight saving information that is set on the local computer will be used. When an offset is specified (using hours and minutes or Z), then the time and offset are always used regardless of the time zone and daylight saving settings on the local computer.

4.设置动作
IExecAction action = (IExecAction)task.Actions.Create(_TASK_ACTION_TYPE.TASK_ACTION_EXEC);
action.Path = “C:\Windows\System32\calc.exe”;

也可以设置发一封邮件,不过还是执行程序的情况多

5.其他设置
task.Settings.ExecutionTimeLimit = “PT0S”;
task.Settings.DisallowStartIfOnBatteries = false;
task.Settings.RunOnlyIfIdle = false;

ExecutionTimeLimit属性
此属性的值对应的是“设置”选项卡的执行期限,如下图
在这里插入图片描述

如果想设置成如图所示的效果,就是把复选框勾掉,那就是PT0S;

官方解释:

The format for this string is PnYnMnDTnHnMnS, where nY is the number of years, nM is the number of months, nD is the number of days, ‘T’ is the date/time separator, nH is the number of hours, nM is the number of minutes, and nS is the number of seconds (for example, PT5M specifies 5 minutes and P1M4DT2H5M specifies one month, four days, two hours, and five minutes). A value of PT0S will enable the task to run indefinitely.

DisallowStartIfOnBatteries属性
对应的是“条件”选项卡的“只有在交流电源下才……”的复选框

RunOnlyIfIdle属性
对应的是“条件”选项卡的“仅当计算机空闲时才……”的复选框

如下图
在这里插入图片描述

6.注册任务
IRegisteredTask regTask = folder.RegisterTaskDefinition(
“BluceYoungTask”,
task,
(int)_TASK_CREATION.TASK_CREATE,
null, //user
null, // password
_TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN,
“”);

            IRunningTask runTask = regTask.Run(null);

其中的BluceYoungTask就是此任务计划程序的名字

_TASK_LOGON_TYPE.TASK_LOGON_INTERACTIVE_TOKEN 的意思,貌似是用当前登录的账户去注册任务(所以登录名和密码都是null),而且只有在当前用户登录的情况下才起作用,其他的枚举值没有测试

官方说明参见:http://technet.microsoft.com/zh-cn/library/aa381365

删除任务计划程序
private void DeleteTask(string taskName)
{
TaskSchedulerClass ts = new TaskSchedulerClass();
ts.Connect(null, null, null, null);
ITaskFolder folder = ts.GetFolder("\");
folder.DeleteTask(taskName, 0);
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
服务器主机安全规范全文共7页,当前为第1页。服务器主机安全规范全文共7页,当前为第1页。服务器主机安全规X 服务器主机安全规范全文共7页,当前为第1页。 服务器主机安全规范全文共7页,当前为第1页。 启用防火墙 阿里云windows Server 2008 R2默认居然没有启用防火墙.2012可能也是这样的,不过这个一定要检查! 补丁更新 启用windows更新服务,设置为自动更新状态,以便与时打补丁. 阿里云windows Server 2008 R2默认为自动更新状态,2012可能也是这样的,不过这个一定要检查! 账号口令 优化账号 操作目的 减少系统无用账号,降低风险 加固方法 "Win+R〞键调出"运行〞->compmgmt.msc〔计算机管理〕->本地用户和组. 1、删除不用的账号,系统账号所属组是否正确.云服务刚开通时,应该只有一个administrator账号和处于禁用状态的guest账号; 2、确保guest账号是禁用状态 3、买阿里云时,管理员账户名称不要用administrator 备注 口令策略 操作目的 增强口令的复杂度与锁定策略等,降低被暴力破解的可能性 加固方法 "Win+R〞键调出"运行〞->secpol.msc 〔本地安全策略〕->安全设置 1、账户策略->密码策略 密码必须符合复杂性要求:启用 密码长度最小值:8个字符 服务器主机安全规范全文共7页,当前为第2页。服务器主机安全规范全文共7页,当前为第2页。密码最短使用期限:0天 服务器主机安全规范全文共7页,当前为第2页。 服务器主机安全规范全文共7页,当前为第2页。 密码最长使用期限:90天 强制密码历史:1个记住密码 用可还原的加密来存储密码:已禁用 2、本地策略->安全选项 交互式登录:不显示最后的用户名:启用 备注 "Win+R〞键调出"运行〞->gpupdate /force立即生效 网络服务 优化服务〔1〕 操作目的 关闭不需要的服务,减小风险 加固方法 "Win+R〞键调出"运行〞->services.msc,以下服务改为禁用: Application Layer Gateway Service〔为应用程序级协议插件提供支持并启用网络/协议连接〕 Background Intelligent Transfer Service〔利用空闲的网络带宽在后台传输文件.如果服务被停用,例如Windows Update 和 MSN Explorer的功能将无法自动下载程序和其他信息〕 Computer Browser〔维护网络上计算机的更新列表,并将列表提供给计算机指定浏览〕 DHCP Client Diagnostic Policy Service Distributed Transaction Coordinator DNS Client Distributed Link Tracking Client Remote Registry〔使远程用户能修改此计算机上的注册表设置〕 Print Spooler〔管理所有本地和网络打印队列与控制所有打印工作〕 Server〔不使用文件共享可以关闭,关闭后再右键点某个磁盘选属性,"共享〞这个页服务器主机安全规范全文共7页,当前为第3页。服务器主机安全规范全文共7页,当前为第3页。面就不存在了〕 服务器主机安全规范全文共7页,当前为第3页。 服务器主机安全规范全文共7页,当前为第3页。 Shell Hardware Detection TCP/IP NetBIOS Helper〔提供 TCP/IP <NetBT> 服务上的NetBIOS 和网络上客户端的NetBIOS 名称解析的支持,从而使用户能够共享文件、打印和登录到网络〕 Task Scheduler使用户能在此计算机上配置和计划自动任务〕 Windows Remote Management<47001端口,Windows远程管理服务,用于配合IIS管理硬件,一般用不到> Workstation〔创建和维护到远程服务的客户端网络连接.如果服务停止,这些连接将不可用〕 备注 用服务需谨慎,特别是远程计算机 优化服务〔2〕 在"网络连接"里,把不需要的协议和服务都移除 ² 去掉Qos数据包计划程序 ² 关闭Netbios服务〔关闭139端口〕 网络连接->本地连接->属性->Internet协议版本 4->属性->高级->WINS->禁用TCP/IP上的NetBIOS. 说明:关闭此功能,你服务器上所有共享服务功能都将关闭,别人在资源管理器中将看不到你的共享资源.这样也防止了信息的泄露. ² Microsoft网络的文件和打印机共享 网络连接->本地连接->属性,把除了"Internet协议版本 4〞以外的东西都勾掉. ² ipv6协议 先关闭

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新标签页

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值