假设我有WinAPI CreateFile的文件句柄。它没有用FILE_FLAG_DELETE_ON_CLOSE打开。
有没有办法删除只有句柄的文件,而没有文件名?
由于
答案 0 :(得分:3)
如果您在Windows Vista或更高版本上运行,SetFileInformationByHandle()将允许您通过设置信息类FileDispositionInfo
来执行此操作。
此操作的最终结果是现在句柄将在关闭时标记为删除 - 当文件的最后一个句柄关闭时,文件将被删除。
对于旧版本的Windows,NTDLL会导出NtSetInformationFile(),它会让你做同样的事情。
答案 1 :(得分:1)
我不知道你是否可以仅根据句柄专门删除文件,但你总是可以使用句柄来检索文件名,如this MSDN article中所述,然后调用DeleteFile()。
答案 2 :(得分:0)
Vista +提供了GetFinalPathNameByHandle(),可以与VOLUME_NAME_DOS一起使用来查询“DOS”路径,然后您可以将其传递给DeleteFile()。