微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

0xC0000142 Windows 任务计划程序中的任务错误

如何解决0xC0000142 Windows 任务计划程序中的任务错误

我以前有许多 C++ .exe 程序(使用 C++ Builder XE7 开发)在 Windows 2008 R2 数据中心服务器中作为计划任务运行。这些任务由 SYstem 帐户运行,我以前从未遇到过任何问题。

我最近将这些任务导入到新的 Windows 2019 数据中心服务器,并在任务计划程序中设置这些任务。使用相同的 SYstem 帐户来运行这些任务,但使用更新的 Windows Server,这些任务现在给我的运行结果为 0xC0000142。

我在网上找到的大多数资源都说要增加注册表编辑器中的桌面堆大小 - 我已经多次这样做并在每次增加后重新启动服务器,但使用这种方法我仍然得到相同的结果,所以我重新设置桌面堆大小恢复到原始值。

我还认为这与缺少 C++ 可再发行组件有关 - 新服务器只有 2015-2019 年的可再发行组件,而 2008 R2 服务器有这些以及 2013 和 2008 年的可再发行组件。所以我安装了这些额外的可再发行组件,但我仍然得到了相同的结果。

我尝试手动重新创建任务,尝试使用不同的域管理员帐户运行任务,还尝试了“仅在用户登录时运行/无论用户是否登录都运行”设置。所有这些都导致了相同的 0xC0000142 错误

此外,Windows 任务计划程序历史记录或事件查看器中也没有显示错误

任何额外的提示/指导将不胜感激!

编辑: 以下是导致退出代码和任务失败的过滤进程监视器日志片段。

Process Monitor logs

编辑 2:现在已经一个多月了,仍然遇到这些问题。我已将 C++ Builder 升级到 10.4,将旧代码移至新 IDE,并重新链接所有包/包含路径/库路径。我还使用了我正在使用的原始 .exe 并将其拆分为具有多个 .exe 文件的多个任务 - 现在这些拆分任务中的大多数都在运行,但有些仍然提供 0xC0000142 代码。我还尝试使用 GitHub 上的这个工具 - Dependencies App - 试图找出确切的 DLL 失败了,但它只是将我指向一些核心 Windows 系统 DLL(api-ms-win-....dll,ext-ms-win-....dll)。我觉得这个输出有误导性,有人知道有什么更好的工具来确定丢失的 DLL 吗?

解决方法

我发现了我的问题。就我而言,具有 0xC0000142 错误的程序正在使用 WININET。在我的 cpp 文件的顶部附近,我有 #pragma link "WININET.LIB"。 Windows Server 2019 不支持 WININET 库,因此尝试使用它会导致某些系统 DLL 的初始化失败。通过删除 #pragma link 语句并替换/删除代码中不必要的 WININET 函数,它允许我的程序在 Windows Server 2019 上运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。