如何确保我的进程永远不会从文件中锁定另一个进程?

时间:2012-06-27 21:18:17

标签: c++ c windows winapi file-locking

我有一个在后台运行的Windows进程,并定期备份文件。通过将文件上载到服务器来完成备份。

在备份期间,我不希望锁定任何其他应用程序,无需写入或读取文件;如果其他应用程序想要更改文件,我应该停止上传并关闭文件。

此处共享模式无用;即使我正在共享对正在读取的文件的所有访问权限,如果另一个进程尝试打开它进行写入而不共享读取,它将被锁定在文件之外。

是否可以在Windows上完成此操作而无需编写驱动程序?

3 个答案:

答案 0 :(得分:4)

您可能对Volume Shadow Copy感兴趣。

答案 1 :(得分:1)

您当然可以复制该文件,然后在上传到服务器之前检查原始文件和副本是否相同(从而表示一致的快照)。

答案 2 :(得分:0)

根据this MSDN page,如果使用NTFS,您应该能够将文件锁定在您的事务中,同时将文件上载到服务器。这将确保您的文件视图不会更改,即使文件已在外部更改。