读取Windows文件而不阻止其他进程写入它

时间:2013-01-31 03:31:49

标签: python windows delphi winapi filesystems

我有一个我想要阅读的文件。该文件可能随时被另一个进程覆盖。我不想阻止那种写作。我准备管理我读过的数据的腐败,但不希望我的阅读以任何方式改变写作过程的行为。

编写文件的过程是在服务器上本地运行的delphi程序。它使用fmCreate打开文件。 fmCreate尝试以独占方式打开文件,如果文件上有任何其他句柄,则会失败。

我正在从python脚本中读取文件,该脚本通过我们的网络远程访问文件。

我对是否有解决方案感兴趣,无论是否受到python或delphi的支持。我想知道在没有修改编写程序的情况下是否有任何方法可以在Windows下实现此目的。

编辑:重申一下,这不是重复。另一个问题是尝试获取正在写入的文件的读取权限。我希望作者能够访问我打开阅读的文件。这些是不同的问题(虽然我担心答案是相似的,但是无法做到。)

1 个答案:

答案 0 :(得分:0)

您可以设置一个可以通过两种方式操作的过滤器驱动程序:(1)在打开文件时修改标志,以及(2)它可以在写入文件时捕获数据并保存数据副本别处。

这种方法比评论中提到的卷影复制服务更轻量级,更高效,但它需要一个过滤器驱动程序。市场上存在几种驱动程序(即那些包含驱动程序并允许您以用户模式编写业务逻辑的产品)但它们成本高昂且在您的情况下可能过度。尽管如此,如果您只需要私人使用的东西,请私下与我联系以获取我们的CallbackFilter许可证。

更新:如果你想让编写器打开已经打开的文件,那么在打开文件时修改标志的过滤器是你唯一的选择。