我有一个用 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 资源管理器中双击来运行它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top