Windows工作排程器

任务计划程序(英语:Task Scheduler),也称计划任务。这是Microsoft Windows中的一个组件,可以预先计划在特定时间或指定时间后启动程序或脚本。它在Windows 95Microsoft Plus!中以“系统代理”(System Agent)首次引入,随后在Windows 98中被更名为任务计划程序。任务计划程序启动前,Windows事件记录服务必须已在运行。

Windows工作排程器
其他名称taskschd.msc
开发者微软
内置于Internet Explorer 4.0及之后
Windows 98及之后
前任系统代理
服务名称Task Scheduler (Schedule)
类型Windows服务
网站docs.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page 编辑维基数据

此服务不应与计算机调度混淆,因其为分配CPU资源到内存中的进程。

版本

任务计划1.0

任务计划程序1.0搭载于Windows 2000Windows XPWindows Server 2003[1]它运行为一个Windows服务,任务定义和计划存储于二进制的.job文件,操作各任务就是直接操作各.job文件,每个任务对应一个操作。在Windows 95Windows 98Windows Me中,任务计划程序使用一个普通的mstask.exe程序运行。在Windows 95和Windows 98中,它还在通知区域显示一个状态图标;在Windows Me中则是运行为一个隐藏服务,但可以显示一个托盘图标。[2]在Windows 2000、Windows XP和Windows Server 2003中,它被实现为一个Windows服务,计算机程序和脚本可以通过六个COM接口访问此服务。[3]微软还提供了一个计划助手DLL、一个例子VBScript和一个自动任务计划程序的配置文件。[4]

任务计划程序除了控制面板中的图形用户界面,Windows还提供两个命令行工具来管理计划任务:at.exe(已弃用)和schtasks.exe[5][6]但是,at.exe不能访问用控制面板或schtasks.exe创建或修改的任务。[7]另外,使用at.exe创建的任务默认非交互;交互任务需要被显式请求。[8]

任务计划2.0

任务计划程序2.0在Windows VistaWindows Server 2008及之后版本中存在。[1]重新设计的“任务计划程序”用户界面基于微软管理控制台。除了在指定的时间或时间间隔后运行任务,任务计划程序2.0还支持日历和基于事件的触发器,比如在特定日志被记录到事件日志时启动一个任务,或者在发生一系列事件时启动任务。另外,同一个事件触发的多个任务可以配置为同时或者按预先配置的顺序以链式执行一系列动作,而无须创建多个计划任务。任务也可配置为基于系统状态运行,诸如闲置指定时间、启动时、注销时,或者只是特定周期或指定时间。对Windows事件日志还可以使用XPath表达式过滤。任务也可在指定事件发生后延迟指定时间再执行,或者不断重复直至其他某些事件发生。任务还可配置运行失败时执行的操作。操作可以响应触发器,既基于事件又基于时间,不仅包含启动应用程序,还执行一系列自定义操作。任务计划程序已包含大量为众多应用程序准备的内置操作,包括发送电子邮件、显示消息框、触发一个COM句柄等。使用任务计划程序API还可指定自定义操作。任务计划程序会在历史日志保留所有任务的所有执行详细信息。[9]Windows Vista使用任务计划程序2.0运行各种系统级任务;[10]因此,任务计划程序服务不再允许被禁用(除非直接修改注册表)。

任务计划程序2.0提供了一个API以允许计算机程序和脚本创建任务。[11]它采用42个COM接口组成。[12]任务计划程序2.0的任务文件基于XML并且人类可读,遵循“任务计划程序方案架构”。[11]虽然可以做到,但微软不建议手动创建任务文件,而应该使用任务计划程序API。

其他功能

  • 新的安全功能,包括使用“凭据管理器”为工作组计算机的任务提供密码,使用Active Directory加入域英语Windows_domain的计算机的任务提供凭据,以防止这些信息被轻易检索。另外,计划任务会在其自身的会话执行,而不是使用当前用户的系统服务会话。
  • 可以唤醒远程计算机,或使用BIOS计时器将机器从睡眠或休眠中唤醒,以执行计划任务或运行刚错过的计划任务。
  • 可以将任务直接附加到事件查看器中的事件。

任务

任务计划程序按各项受管理的任务运作。任务会在特定条件下以执行操作响应。定义一个任务可以关联一系列操作,其中可以包括启动应用程序或采取其他自定义操作,to a set of triggers, which can either基于时间或基于事件。此外,一个任务也可以包含定义如何执行操作的元数据,例如任务将在哪个安全上下文运行。任务被序列化为.job文件并存储在名为“任务文件夹”的特殊文件夹中。在编程角度,任务文件夹可以使用ITaskFolder接口或TaskFolder脚本对象访问,单个任务可以使用IRegisteredTask接口或RegisteredTask对象访问。[13]

软件缺陷

在Windows 2000和Windows XP中,当计算机准备使用sysprep进行磁盘映像时,分配给以系统权限运行的任务不起作用。Sysprep会更改安全标识符(SID)以避免重复,但不会更新计划任务为使用新的SID。因此,所有SYSTEM的计划任务在映像的计算机上都会运行失败。没有适用于此问题的解决方案,但重新计划该任务可以暂时缓解问题。[14]

在Windows Vista和Windows Server 2008上,如果未安装Service Pack 2,任务计划程序中的“下次运行时间”可能显示错误。[15]

当用户在Windows Vista、7、2008以及2008 R2作业系统上的“微软管理控制台”运行“任务计划程序2.0”版本时会提示用户当前正在运行“任务计划程序1.0”的通知。虽然只是一个不足为虑的小瑕疵,很可能是软件开发人员在重写该组件时忘记修复此Bug。但在后续的Windows 8和Windows Severe 2012作业系统中已得到纠正。

参见

参考资料

  1. ^ 1.0 1.1 "About the Task Scheduler". [2016-06-22]. (原始内容存档于2012-04-20). 
  2. ^ How to Enable the Scheduled Tasks Icon in Windows Me. [2016-06-22]. (原始内容存档于2008-01-30). 
  3. ^ Task Scheduler 1.0 Interfaces. MSDN. Microsoft. [30 May 2014]. (原始内容存档于2016-08-28). 
  4. ^ Task Scheduler Using VBScript. [2016-06-22]. (原始内容存档于2006-05-04). 
  5. ^ Schtasks. Windows XP command-line reference. Microsoft. [18 May 2014]. (原始内容存档于2018-02-03). 
  6. ^ At. Windows XP command-line reference. Microsoft. [18 May 2014]. (原始内容存档于2018-02-03). 
  7. ^ How To Use the AT Command to Schedule Tasks. Support 4.5. Microsoft. 30 October 2006. (原始内容存档于2015-03-07). 
  8. ^ Applications Started with AT Are Not Interactive. Support 3.2. Microsoft. 20 February 2007. (原始内容存档于2004-10-29). 
  9. ^ Windows Vista Task Scheduler. Microsoft TechNet. March 3, 2006 [2006-04-24]. (原始内容存档于2006-04-24). 
  10. ^ Description of the scheduled tasks in Windows Vista. [2016-06-22]. (原始内容存档于2007-10-22). 
  11. ^ 11.0 11.1 Kenny Kerr. Task Scheduler 2.0. MSDN. [2007-10-06]. (原始内容存档于2007-12-26). 
  12. ^ Task Scheduler 2.0 Interfaces. MSDN. Microsoft. [30 May 2014]. (原始内容存档于2016-03-04). 
  13. ^ Tasks (Windows). MSDN. [2007-10-06]. (原始内容存档于2008-02-13). 
  14. ^ Scheduled tasks may not start if you used a System Preparation image to install Windows XP or Windows 2000. Microsoft Support. Microsoft. 1 July 2004 [19 May 2012]. (原始内容存档于2013-04-13). 
  15. ^ The value in the Next Run Time field in Task Scheduler is incorrect in Windows Vista and in Windows Server 2008. Microsoft Support. Microsoft. 15 October 2008 [19 May 2012]. (原始内容存档于2014-03-08). 

外部链接