0

假设由于 WinAPI CreateFile,我有一个文件句柄。它不是用 FILE_FLAG_DELETE_ON_CLOSE 打开的。

有没有办法在没有文件名的情况下删除只有句柄的文件?

谢谢

4

3 回答 3

4

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

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

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

于 2012-05-22T18:49:11.640 回答
1

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

于 2012-05-22T18:29:37.843 回答
0

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

于 2012-05-23T02:52:22.070 回答