在Windows中覆盖打开的文件

时间:2009-11-20 18:13:55

标签: file winapi

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

1 个答案:

答案 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选项一起使用。但我不确定这是否有效;除了它存在之外,我对这个电话不太了解。 : - )