在Windows中覆盖打开的文件

kgr*_*ffs 2 winapi file

在什么情况下Windows允许您覆盖打开的文件?这是允许的吗?这包括将不同的文件重命名为与打开文件相同的名称.

asv*_*kau 6

如果您查看文档CreateFile(),则有此dwShareMode参数.这可以确定另一个进程在打开时可以对该文件执行的操作.

指定FILE_SHARE_READ让另一个进程打开文件进行读取.有FILE_SHARE_WRITE,这意味着另一个进程可以写入它.还有FILE_SHARE_DELETE,允许删除和(IIRC)也重命名.

如果有人在没有打开文件的情况下FILE_SHARE_WRITE打开文件进行写访问,你就会得到ERROR_SHARING_VIOLATION.否则你应该能够写信给它.

不幸的是,如果一个进程出现并且没有设置共享标志以允许您需要的东西,那么你几乎没有运气.虽然您可以使用MoveFileEx()该选项MOVEFILE_DELAY_UNTIL_REBOOT.但我不确定这是否有效; 除了它存在之外,我对这个电话不太了解.:-)