是否可以删除Windows下进程打开的文件?

Mar*_* Ba 3 c++ windows winapi

出于测试和模拟目的,我想删除当前由我的进程打开的文件。

所述的CreateFile文档状态,有可能在一个模式(以打开一个文件FILE_SHARE_DELETE),其允许打开句柄指向到被另一操作被删除的文件。(我已经通过 CreateFile(FILE_SHARE_DELETE) + DeleteFile 尝试并确认了这一点。)

然而,我现在想知道的是,是否有可能以某种方式删除没有上述标志的任何人打开的文件?

据我了解DeleteFile 文档,使用此功能是不可能的,因为

如果应用程序尝试删除为正常 I/O 打开的文件或作为内存映射文件,DeleteFile 函数将失败。

有没有其他方法可以删除打开的文件,但没有设置 FILE_SHARE_DELETE 标志?

Ste*_*end 5

没有办法做到这一点。

做这样的事情最接近的方式是安排使用重启删除MoveFileEx与目标文件名NULL,并且MOVEFILE_DELAY_UNTIL_REBOOTdwFlags参数。