在什么情况下Windows允许您覆盖打开的文件?这是允许的吗?这包括将不同的文件重命名为与打开文件相同的名称。
答案 0 :(得分:6)
如果您查看documentation for CreateFile()
,则会显示此dwShareMode
参数。这可以确定另一个进程在打开时对该文件可以做什么。
指定FILE_SHARE_READ
让另一个进程打开文件进行读取。有FILE_SHARE_WRITE
,这意味着另一个进程可以写入它。还有FILE_SHARE_DELETE
,它允许删除和(IIRC)也重命名。
如果有人在没有FILE_SHARE_WRITE
的情况下打开文件而您打开文件进行写访问,则会获得ERROR_SHARING_VIOLATION
。否则你应该能够写信给它。
不幸的是,如果一个进程出现并且没有设置共享标志以允许您需要的东西,那么你几乎没有运气。虽然您可以将MoveFileEx()
与MOVEFILE_DELAY_UNTIL_REBOOT
选项一起使用。但我不确定这是否有效;除了它存在之外,我对这个电话不太了解。 : - )