当任务具有 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”......这就是她挂起的地方。
您是否有权访问该程序的源代码以进行调试?听起来windows创建失败了,因为除非任务所有者登录到机器,否则程序没有可用的windows桌面。这篇文章http://msdn.microsoft.com/en-us/library/ms687105%28VS.85%29.aspx描述了窗口站和桌面创建的过程。
任务设置是否在特定目录中启动?在它正在读取/写入的那些目录中正确设置了权限..
我假设任务中的“运行方式”设置正确(必须检查基础知识!:))
您是否检查以确保帐户正在运行任务被授予“作为批处理作业登录”的权限(本地安全策略\本地策略\用户权限分配\作为批处理作业登录)
这里的问题是您正在运行的程序需要 GUI。任务没有 Windows GUI。因此,如果您可以在没有 GUI 的情况下运行程序,那么您就可以了。