仅使用句柄删除文件

时间:2012-05-22 18:15:30

标签: windows winapi createfile

假设我有WinAPI CreateFile的文件句柄。它没有用FILE_FLAG_DELETE_ON_CLOSE打开。

有没有办法删除只有句柄的文件,而没有文件名?

由于

3 个答案:

答案 0 :(得分:3)

如果您在Windows Vista或更高版本上运行,SetFileInformationByHandle()将允许您通过设置信息类FileDispositionInfo来执行此操作。

此操作的最终结果是现在句柄将在关闭时标记为删除 - 当文件的最后一个句柄关闭时,文件将被删除。

对于旧版本的Windows,NTDLL会导出NtSetInformationFile(),它会让你做同样的事情。

答案 1 :(得分:1)

我不知道你是否可以仅根据句柄专门删除文件,但你总是可以使用句柄来检索文件名,如this MSDN article中所述,然后调用DeleteFile()。

答案 2 :(得分:0)

Vista +提供了GetFinalPathNameByHandle(),可以与VOLUME_NAME_DOS一起使用来查询“DOS”路径,然后您可以将其传递给DeleteFile()