【问题标题】:Read a file while another program locked it在另一个程序锁定文件时读取文件
【发布时间】:2015-09-06 20:47:24
【问题描述】:

我有一个程序可以读取软件写入的文件。但是软件在写入文件时会锁定文件(我什至无法复制文件!)。在写入文件时如何读取文件?

我正在使用带有 NTFS 文件系统的 Windows 7,我的程序是用 C++ 编写的。

【问题讨论】:

  • 如果您没有源代码并且能够修改正在编写的程序,则不能。即使您可以做这些事情(根据@max taldykin 的回答),那么根据 why 您尝试读取正在写入的文件以及它的写入方式,您可能必须小心关于数据一致性。

标签: c++ windows file-locking


【解决方案1】:

写入文件的程序应该在启用读取共享的情况下打开它,否则其他进程无法读取尚未关闭的文件:

FILE_SHARE_READ

启用对文件或设备的后续打开操作以请求读取访问权限。
否则,如果其他进程请求读取访问权限,则无法打开文件或设备。
如果未指定此标志,但已打开文件或设备进行读取访问,则函数失败。

MSDN CreateFile查看更多详情。

【讨论】:

  • 如果没有启用这个标志,有什么办法可以打开它进行阅读? (任何技巧,黑客,...?)
  • 不知道任何黑客,但如果你有足够的权限,你可以杀死持有锁的程序,它会释放它。
猜你喜欢
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多