我不确定这是否应该放在这里或 stackoverflow 上。
我有一个应用程序,它从网络共享(输入文件夹)加载一些文件,从中提取某些数据,并将新文件(使用 SharpZLib 压缩)保存到另一个网络共享(输出文件夹)。当您直接打开此应用程序时,它运行良好,但当将其设置为计划任务时,它会在很多地方失败。
此应用程序运行于 Win 2003 服务器上。
我先说一下,计划任务设置为使用我当前登录的相同登录帐户,所以这不是因为它使用的是 LocalSystem 帐户。这里发生了其他事情。
最初,应用程序使用 为输入文件夹分配驱动器号WNetGetConnectionA()
。我不记得为什么这样做,我们团队中的其他人这样做了,她现在已经离开了。我认为使用带有 UNC 路径的 WinZip 命令行存在一些问题。我从 WinZip 命令行实用程序切换到使用 SharpZLib,因为使用 WinZip 命令行存在其他问题。无论如何,应用程序在尝试分配驱动器号时失败,错误为“连接已建立”。事实并非如此,即使尝试了WNetCancelConnection()
,它仍然不起作用。
然后我决定在服务器上手动映射驱动器。然后当应用程序调用它时,Directory.Exists(inputFolderPath)
它会返回 false,即使它确实存在。所以,无论出于什么原因,我都无法从应用程序内部读取此目录。我可以在 Windows 资源管理器中手动导航到此文件夹并打开文件。应用程序日志文件显示按计划执行它的用户是我期望的用户,而不是 LocalSystem。
有任何想法吗?
答案1
确保任务设置为“无论是否登录都运行”,还要检查所有应用程序对所有文件和文件夹是否具有完全明确的权限(非继承)。
您得到了什么结果代码?