我有一个在后台运行并定期备份文件的 Windows 进程。备份是通过将文件上传到服务器来完成的。
在备份期间,我不想锁定任何其他应用程序,使其无法写入或读取文件;如果其他应用程序想要更改文件,我应该停止上传并关闭文件。
分享模式在这里没用;即使我正在共享对正在读取的文件的所有访问权限,如果其他进程尝试打开它进行写入而不共享读取,它将被锁定在文件之外。
是否可以在不编写驱动程序的情况下在 Windows 上完成此操作?
我有一个在后台运行并定期备份文件的 Windows 进程。备份是通过将文件上传到服务器来完成的。
在备份期间,我不想锁定任何其他应用程序,使其无法写入或读取文件;如果其他应用程序想要更改文件,我应该停止上传并关闭文件。
分享模式在这里没用;即使我正在共享对正在读取的文件的所有访问权限,如果其他进程尝试打开它进行写入而不共享读取,它将被锁定在文件之外。
是否可以在不编写驱动程序的情况下在 Windows 上完成此操作?
您可能对卷影复制感兴趣。
您当然可以复制文件,然后在上传到服务器之前检查原始文件和副本是否相同(因此代表一致的快照)。
根据这个 MSDN page,如果使用 NTFS,您应该能够将文件锁定在您的事务中,同时将文件上传到服务器。这将确保您对文件的看法不会改变,即使文件已从外部更改。