DeleteFile(kernel32.dll)与DeleteItem(shell32.dll)

时间:2017-10-16 11:08:27

标签: c++ api winapi kernel32 shell32

这两个功能有什么区别?

3 个答案:

答案 0 :(得分:1)

  • DeleteFile是一个低级函数,仅删除Windows支持的文件系统和文件共享上的文件。

  • IFileOperation::DeleteItem删除shell namespace中的项目。

理论上,DeleteItem可用于删除控制面板项,ftp文件/文件夹以及shell命名空间中设置SFGAO_CANDELETE的任何其他内容。如果传递给DeleteItem的IShellItem是普通文件系统上的文件,则DeleteFile最终将用于删除该文件。

自Windows 95(IShellFolder和朋友)以来,shell命名空间模型已存在,但IFileOperation仅存在于Vista及更高版本中,并且是添加到这些系统的新shell复制引擎的一部分。

答案 1 :(得分:0)

DeleteFile是WinAPI的较旧组件,通常在旧系统中更受支持。

IFileOperation :: DeleteItem是一种较新的方法(可能调用DeleteFile下游),用于与标准WinAPI不同的API生态系统集成。

与DeleteFile(更像是“原子”操作)相比,IFileOperation基础具有更大的灵活性和面向对象的设计。在删除文件方面,它们在行为上基本相同。

答案 2 :(得分:0)

IFileOperation :: DeleteItem允许您提供有关操作的反馈和进度。虽然DeleteFile没有提供反馈,只是操作的结果。