作为计划任务运行时,C#控制台程序无法发送传真

时间:2020-03-05 18:45:45  来源:igfitidea点击:

我有一个用C编写的控制台程序,用于发送传真。当我在Visual Studio中逐步执行该程序时,它可以正常工作。当我双击Windows资源管理器中的程序时,它可以正常工作。当我设置Windows计划的任务以运行程序时,此事件在事件日志中失败。

EventType clr20r3, P1 consolefaxtest.exe, P2 1.0.0.0, 
P3 48bb146b, P4 consolefaxtest, P5 1.0.0.0, P6 48bb146b, 
P7 1, P8 80, P9 system.io.filenotfoundexception, 
P10 NIL.

我写了一个批处理文件来运行传真程序,但此消息失败。

Unhandled Exception: System.IO.FileNotFoundException: Operation failed.
at FAXCOMEXLib.FaxDocumentClass.ConnectedSubmit(FaxServer pFaxServer)

谁能向我解释这种行为?

解决方案

回答

检查我们为任务设置了正确的工作目录

回答

计划任务是在我们正在开发的同一台计算机上运行还是在专用的olp服务器上运行?当我们更改环境时,更改路径很常见,因此要发送给文档的路径也一样吗?

回答

我无法解释,但我有一些想法。

在大多数情况下,当程序可以对它进行良好的测试时,而不是在计划安全性时,情况就是如此。根据程序安排了哪个用户?也许该用户没有被授予足够的访问权限。

程序正在尝试访问网络驱动器的资源,是运行计划任务的用户根本没有的资源吗?

回答

我同意MartinNH。

这些问题中的许多问题源于我们以管理员身份在Visual Studio中登录时进行开发的事实(因此该程序具有正确设置所有执行权限的事实),但我们以具有较少特权的用户身份进行部署。

尝试将任务计划程序用户的特权设置得更高。

回答

如果我们在Vista中运行,则可能会发现海拔越来越高。我们可能需要确保任务以适当的管理员身份而不是受限用户身份运行。

回答

运行计划任务时,可以使其在用户下运行。验证运行计划任务的用户具有与我们相同的传真资源权限。这就是为什么在Windows资源管理器中双击时可以运行它的原因。