本文帮助解决计划任务无法运行并出现错误“任务计划程序服务不可用”的问题。
某些计划任务无法运行。 打开任务计划程序调查失败时,会收到以下错误消息:
任务计划服务不可用。 任务计划程序将尝试重新连接到它。
此问题由以下原因引起:
- 计划任务配置不正确。
- 计划的任务目标应用程序或脚本不再可用或有效。
- 在最近的作系统(OS)升级后,计划任务不兼容。
使用以下步骤解决此问题:
- 清理
at
任务(如果存在)。 - 删除损坏的任务,然后根据需要再次创建它们。
步骤 1:清理任务(如果存在)
注释
任务 是指由操作系统使用 at
命令自动运行的计划任务。 它是 Windows 中的旧命令,用于在指定时间和日期计划任务。 这些任务由任务计划程序服务管理。 OS 升级后,此类任务可能会因兼容性问题或任务计划程序服务出现问题而失败。 这可能会影响任务计划程序的成功启动。
检查 C:\Windows\System32\Tasks 文件夹,以确定是否在任务计划程序下创建了任何 at
任务。 如果是这样,任务将列在以下位置下。 例如:
C:\Windows\System32\Tasks
- C:\Windows\System32\Tasks\at1
- C:\Windows\System32\Tasks\At2
C:\Windows\Tasks
- C:\Windows\Tasks\At1.job
- C:\Windows\Tasks\At2.job
若要解决此问题,请使用以下步骤清理旧任务:
重要
本部分、方法或任务包含说明如何修改注册表的步骤。 如果您错误地修改注册表,可能会出现严重问题。 因此,请确保仔细执行这些步骤。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和恢复注册表的更多信息,请参见如何在 Windows 中备份和恢复注册表。
停止任务计划程序服务:
下载 PsTools 并提取文件。
转到提取的 PsTools 目录,然后从管理命令提示符(cmd.exe)窗口中运行以下命令:
psexec.exe -s -i cmd.exe
接受最终用户许可协议(EULA)后,将打开另一个 cmd.exe 过程。 键入
whoami
命令提示符,应收到输出nt authority\system
。运行以下命令:
net stop schedule
成功停止任务计划程序服务后,如果存在
at
任务,请在备份后删除其相关文件。 下面是一些示例:C:\Windows\System32\Tasks
- C:\Windows\System32\Tasks\at1
- C:\Windows\System32\Tasks\At2
C:\Windows\Tasks
- C:\Windows\Tasks\At1.job
- C:\Windows\Tasks\At2.job
从注册表中删除计划条目:
以管理员身份打开注册表编辑器。
转到
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks
并备份Tasks
文件夹,然后继续执行后续步骤。删除以 ...
{1}
结尾的键...{3}
{2}
或更多(如果存在)。 这些键的属性Path
设置为\\At<#>
,例如:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{1}
Path
=\\At1
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{2}
Path
=\\At2
如果存在,请删除以下键:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{xxxxxxxx-EC79-4064-9831-xxxxxxxxxxxx}
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\{xxxxxxxx-FB9E-4BDD-8FED-xxxxxxxxxxxx}
转到
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
,并删除以结尾At1
的键,At2
At3
... 或更多(如果存在)。 这些键以At<#>
结尾,例如:重要
在 继续执行后续步骤之前备份
Tree
密钥。HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\At1
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\At2
请返回到使用
psexec
命令打开的命令提示符,然后运行以下命令以启动任务计划服务:netsh start schedule
步骤 2:删除损坏的任务,然后根据需要再次创建它们
如果清理 at
任务或没有 at
任务,则可能已损坏导致此问题的任务。 找到损坏的任务,将其删除,然后根据需要再次创建。
查找损坏的任务:
打开任务计划程序,并确认第一个错误消息以进入任务计划程序控制台。
展开任务计划程序库结构。
选择每个文件夹对象并观察它们是否生成以下错误消息:
所选任务“{0}”不再存在。 若要查看当前任务,请单击“刷新”。
记下生成此错误消息的每个任务。
在任务计划程序内浏览所有文件夹和子文件夹后,即可删除损坏的任务。
删除损坏的任务:
重要
本部分、方法或任务包含说明如何修改注册表的步骤。 如果您错误地修改注册表,可能会出现严重问题。 因此,请确保仔细执行这些步骤。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和恢复注册表的更多信息,请参见如何在 Windows 中备份和恢复注册表。
注释
在继续执行以下步骤之前,请备份以下项:
- 文件夹 %SYSTEMDRIVE%\Windows\System32\Tasks
- 注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\
从“任务”文件夹中删除与损坏的任务相对应的任务文件(%SYSTEMDRIVE%\Windows\System32\Tasks)。
转到注册表子项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
。 记下Id
需要删除与损坏的任务对应的每个任务的值(以 GUID 格式)。从
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
中删除与已损坏的任务对应的注册表子项。
从
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks
中删除与损坏的任务对应的注册表子项。从以下位置之一删除注册表中与损坏的任务对应的子项:
注释
该任务仅存在于三个位置之一,并且采用 GUID 格式。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Plain
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Logon
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Boot
请联系 Microsoft 支持
如果上述步骤无法解决问题,请联系Microsoft 支持部门以获取进一步帮助。