如何强制写入/删除其他用户远程打开的文件?

问题描述:

我正在编写一个在文件共享中生成一些报告的进程,其他用户可以打开以供阅读(例如,csv文件)。如果有一个报告打开(在Excel中),当我追加内容时,我收到一个错误“该进程无法访问文件'[...]',因为它正在被另一个进程使用”。如何强制写入/删除其他用户远程打开的文件?

作为一种替代方案,我可以阻止其他用户从输出位置访问这些报告,并在他们将访问的目录中安排副本,但该副本将具有相同的结果,因为文件副本当他们在该目录中打开文件时仍然不可能。

我无法关闭对该文件具有句柄的进程,因为它在任何其他计算机上。该文件甚至不在运行该进程的计算机上,而是远程文件共享。

这似乎是一种常见的情况,但我可以弄清楚如何管理文件复制/写入的唯一方法是等到其他用户关闭,这在我的情况下是不可接受的。

+0

一种选择是安排副本,如果失败,它们会重新计划未来的时间。如果您的过程是长期存在的(例如,作为服务运行),那么您可能会在应用程序中保持打开文件,并强制Excel以只读方式打开文件(我没有真正测试过)。 – jdigital 2011-05-04 18:44:21

可能不是一个选项,但您可以通过内部Web服务器提供报告吗?这将防止可怕的“文件在使用”问题。