计划任务失败,出现错误“任务计划程序服务不可用”

本文帮助解决计划任务无法运行并出现错误“任务计划程序服务不可用”的问题。

某些计划任务无法运行。 打开任务计划程序调查失败时,会收到以下错误消息:

任务计划服务不可用。 任务计划程序将尝试重新连接到它。

此问题由以下原因引起:

  • 计划任务配置不正确。
  • 计划的任务目标应用程序或脚本不再可用或有效。
  • 在最近的作系统(OS)升级后,计划任务不兼容。

使用以下步骤解决此问题:

  1. 清理 at 任务(如果存在)。
  2. 删除损坏的任务,然后根据需要再次创建它们。

步骤 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 中备份和恢复注册表

  1. 停止任务计划程序服务:

    1. 下载 PsTools 并提取文件。

    2. 转到提取的 PsTools 目录,然后从管理命令提示符(cmd.exe)窗口中运行以下命令:

      psexec.exe -s -i cmd.exe
      
    3. 接受最终用户许可协议(EULA)后,将打开另一个 cmd.exe 过程。 键入 whoami 命令提示符,应收到输出 nt authority\system

    4. 运行以下命令:

      net stop schedule
      
  2. 成功停止任务计划程序服务后,如果存在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
  3. 从注册表中删除计划条目:

    1. 以管理员身份打开注册表编辑器。

    2. 转到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks并备份 Tasks 文件夹,然后继续执行后续步骤。

    3. 删除以 ...{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

    4. 如果存在,请删除以下键:

      • 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}
    5. 转到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree,并删除以结尾At1的键, At2At3 ... 或更多(如果存在)。 这些键以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
  4. 请返回到使用 psexec 命令打开的命令提示符,然后运行以下命令以启动任务计划服务:

    netsh start schedule
    

步骤 2:删除损坏的任务,然后根据需要再次创建它们

如果清理 at 任务或没有 at 任务,则可能已损坏导致此问题的任务。 找到损坏的任务,将其删除,然后根据需要再次创建。

  1. 查找损坏的任务:

    1. 打开任务计划程序,并确认第一个错误消息以进入任务计划程序控制台。

    2. 展开任务计划程序库结构。

    3. 选择每个文件夹对象并观察它们是否生成以下错误消息:

      所选任务“{0}”不再存在。 若要查看当前任务,请单击“刷新”。

    4. 记下生成此错误消息的每个任务。

    5. 在任务计划程序内浏览所有文件夹和子文件夹后,即可删除损坏的任务。

  2. 删除损坏的任务:

    重要

    本部分、方法或任务包含说明如何修改注册表的步骤。 如果您错误地修改注册表,可能会出现严重问题。 因此,请确保仔细执行这些步骤。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和恢复注册表的更多信息,请参见如何在 Windows 中备份和恢复注册表

    注释

    在继续执行以下步骤之前,请备份以下项:

    • 文件夹 %SYSTEMDRIVE%\Windows\System32\Tasks
    • 注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\
    1. 从“任务”文件夹中删除与损坏的任务相对应的任务文件(%SYSTEMDRIVE%\Windows\System32\Tasks)。

    2. 转到注册表子项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree。 记下 Id 需要删除与损坏的任务对应的每个任务的值(以 GUID 格式)。

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree中删除与已损坏的任务对应的注册表子项。

  3. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks中删除与损坏的任务对应的注册表子项。

  4. 从以下位置之一删除注册表中与损坏的任务对应的子项:

    注释

    该任务仅存在于三个位置之一,并且采用 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 支持部门以获取进一步帮助。