Windows 在什么情况下允许覆盖打开的文件?这是允许的吗?这包括将不同的文件重命名为与打开的文件相同的名称。
最佳答案
如果你看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
。但我不确定这是否有效;我对这个电话了解不多,只知道它存在。 :-)
关于file - 覆盖 Windows 中打开的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772330/