【问题标题】:How to find the location of the Scheduled Tasks folder如何找到计划任务文件夹的位置
【发布时间】:2011-02-24 05:21:09
【问题描述】:

我在网上看到一些参考资料指出 Windows 中的“计划任务”存储在 %SystemRoot%\Tasks 中,我认为这通常等同于 C:\Windows\Tasks

但是,我发现虽然该文件夹存在于我的 Windows 7 系统上,但计划任务不会使用它。

我的系统似乎在使用 C:\Windows\System32\Tasks

我研究了环境变量,那里似乎没有与Scheduled Tasks 相关的任何内容。

我如何发现哪个文件夹用于计划任务?

【问题讨论】:

  • 在 python 中你也许可以使用 ctypes 模块 (example)。但是我找不到专门针对已调度任务的参考。
  • 您通常不会对文件夹本身进行操作,因为它是 Windows 私有的。自动化控制任务的方式是通过api。
  • @DavidHeffernan:完全同意,但有些时候你需要这样做。今天我搞砸了我的一项任务的 SDDL。在我找到 \System32\Tasks 下的任务之前,无法使用 api 解决此问题。很有帮助的问题。 +1

标签: windows scheduled-tasks


【解决方案1】:

我想扩展@Jan 答案:

似乎Task Scheduler 1.0 API 使用C:\Windows\Tasks 文件夹来创建和枚举任务(this example),而Task Scheduler 2.0 API 使用C:\Windows\System32\Tasks 来创建和枚举任务(this example)。

看来,Windows 控制台实用程序 schtasks 和 GUI 实用程序 taskschd.msc 使用 Task Scheduler 2.0 API

附: 我发现,如果放置在C:\Windows\Tasks 中的任务没有设置AccountInformation,那么任务不会在Windows 控制台和GUI 调度程序中显示。如果您设置 AccountInformation(甚至是“”为SYSTEM帐户)和设置标志TASK_FLAG_RUN_ONLY_IF_LOGGED_ON - 任务将在所有标准应用程序中显示 .

Solution found here

【讨论】:

    【解决方案2】:

    任务保存在文件系统和注册表中

    任务存储在 3 个位置:1 个文件系统位置和 2 个注册表位置。

    文件系统:

    C:\Windows\System32\Tasks
    

    注册表:

    HKLM\Software\Microsoft\Windows NT\CurrentVersion\Schedule\Taskcache\Tasks
    HKLM\Software\Microsoft\Windows NT\CurrentVersion\Schedule\Taskcache\Tree
    

    因此,您需要删除这 3 个位置的损坏任务。

    【讨论】:

    • 注册表Taskcache对我很有帮助,谢谢!我备份了旧 Windows 安装的整个注册表,而任务本身已经消失(使用 Windows)。
    • 非常感谢,这解决了我的问题。令人惊讶的是,许多谷歌链接确实显示了不工作的解决方案,没有提到文件系统中的隐藏文件夹
    • %SystemRoot%\Tasks (C:\Windows\Tasks) 中还有一些任务,在某些情况下不会显示在任务计划程序管理单元中。
    【解决方案3】:

    在较新版本的 Windows(Windows 10 和 Windows Server 2016)上,您创建的任务位于 C:\Windows\Tasks。他们将有扩展名.job

    例如,如果您创建任务“DoWork”,它将在

    C:\Windows\Tasks\DoWork.job
    

    【讨论】:

    • 在我的 Windows Server 2016 实例中,任务位于 `C:\Windows\System32\Tasks` 中,它们是没有扩展名的 XML 文件。
    【解决方案4】:

    看起来 TaskCache 注册表数据在 ...

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache

    ...在我的 Windows 10 PC 上(即在 TaskCache 之前添加 Schedule 并且 TaskCache 有一个大写 C )。

    【讨论】:

      【解决方案5】:

      MMC 存在多个问题,但在我的业务中几乎每台 PC 上,询问调度程序 API 都不会打开并且不知何故已损坏。因此,您不能编辑、删除或以其他方式修改在 API 决定不再运行之前开发的任务。我们发现解决该问题的唯一方法是完全清除 C:\Users\ 区域下的人员配置文件,并在人员重新登录后强制系统重新创建登录。这似乎解决了 API 问题和它再次工作,但是该用户通常不再看到这些任务,因为开发的任务是特定于用户的,而不是 Windows 7 中的机器。另一个奇怪的事情是,有时,虽然没有任何可以分析的频率,即使 API 已损坏且无法打开,任务仍会运行。这个问题的原因显然是未知的,但在各种网站上描述了许多“修复”,但用户配置文件删除和重新添加似乎每次都有效,至少有一段时间。这些任务现在在 WIN 7 中保存为 XML,因此如果您在 system32/tasks 文件夹中找到它们,您可以删除它们,或将它们复制到新驱动器,然后将它们重新导入任务计划程序。我们使用了来自 Splinterware 的系统调度程序软件,因为我们多次遇到相同的损坏问题,即使修复似乎不是永久性的。

      【讨论】:

        【解决方案6】:

        对于 Windows 7 及更高版本,计划任务不是由 cmd.exe 运行,而是由 MMC(Microsoft 管理控制台)运行。 %SystemRoot%\Tasks 应该适用于任何其他 Windows 版本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-04
          • 2014-02-23
          • 2011-11-27
          • 2013-04-19
          • 2010-09-22
          • 2014-08-14
          • 1970-01-01
          相关资源
          最近更新 更多