当任务具有 GUI 时,在 Windows 2003 中运行计划任务是否存在问题?我有一个在 Windows 2000 中运行良好的计划任务,但在 Windows 2003 上无法运行。
细节:
我有一个 .bat 作业,多年来一直在一台旧的 Windows 2000 服务器上每小时运行一次。我上周终于淘汰了那台服务器,并将该作业(以及相关程序和文件)移至 Windows 2003 服务器。
.bat 文件首先调用几个 cmd 行应用程序,但最后一步是基于 GUI 的 .NET 应用程序(它对图像文件执行一些 OCR,然后自行关闭)。
从新服务器,以计划任务所有者身份登录,我可以从命令行成功运行.bat 文件。
在新服务器上,再次以计划任务所有者身份登录,我可以右键单击计划程序中的任务并成功运行它。此任务只是运行相同的 .bat 文件。
如果计划任务所有者登录到 2003 服务器,并且该任务从远程服务器(用户启动计划任务并连接到该服务器)启动,它也将成功运行。
如果计划任务所有者是不是登录到此服务器,则计划任务在启动 GUI 应用程序的步骤中失败。我们无法收到任何错误消息。从不同的会话/用户帐户运行 ProcMon 监控该用户帐户也没有发现任何问题。
目前,我最讨厌的解决方法是让计划任务所有者在控制台上保持登录状态,同时屏幕锁定。当然,每次重新启动服务器时,这都会变得很麻烦...
计划任务所有者是我们的“域服务帐户”,它正在处理所有其他服务器上的所有其他任务。它没有被锁定或类似情况。
我甚至尝试修改任务计划程序以选中“允许服务与桌面交互”框,但这并没有改变任何东西。 (是的,我在更改后重新启动了服务。)
有什么想法吗?
更新(2010 年 1 月 19 日)
我需要澄清一点:我提到的 .NET 应用程序可以做很多有用的事情。直到它需要打开一个窗口时,应用程序才会挂起。我们可以通过应用程序留下的日志条目查看应用程序的进度,因此我们可以看到它运行良好,最后一个日志条目是“即将启动 OCR”……这就是它挂起的地方。
答案1
您是否有权访问程序的源代码进行调试?听起来 Windows 创建失败了,因为除非任务所有者登录到机器,否则程序无法使用 Windows 桌面。这篇文章http://msdn.microsoft.com/en-us/library/ms687105%28VS.85%29.aspx描述窗口站和桌面创建的过程。
答案2
任务是否设置为在特定目录中启动?在读取/写入的目录中权限是否设置正确。
我假设任务中的“以...身份运行”设置正确(必须检查基础知识!:))
您是否已检查确保正在运行任务的帐户被授予“作为批处理作业登录”的权限(本地安全策略\本地策略\用户权限分配\作为批处理作业登录)
答案3
这里的问题是您正在运行的程序需要 GUI。任务没有 Windows GUI。因此,如果您可以在没有 GUI 的情况下运行该程序,那么您就没问题了。