2
Windows在哪些情况下允许覆盖打开的文件?这是否允许?这包括将不同的文件重命名为与打开文件相同的名称。覆盖Windows中的打开文件
Windows在哪些情况下允许覆盖打开的文件?这是否允许?这包括将不同的文件重命名为与打开文件相同的名称。覆盖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
。但我不确定这是否有效;除了它存在之外,我对这个电话的了解不多。 :-)