如何找到计划任务文件夹的位置
Posted
技术标签:
【中文标题】如何找到计划任务文件夹的位置【英文标题】: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 【参考方案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 版本。
【讨论】:
以上是关于如何找到计划任务文件夹的位置的主要内容,如果未能解决你的问题,请参考以下文章
DataWhale学习计划(第六期):python基础任务6
从任务计划程序运行时如何重定向 PowerShell 输出?