【发布时间】:2011-10-10 10:06:03
【问题描述】:
我有一个可以通过 pidl 通过IShellFolder 访问的文件。此文件具有标志SFGAO_CANDELETE,其父文件夹仅具有标志SFGAO_STORAGEANCESTOR。
如何删除文件?
条件:
- 文件和文件夹位于 USB 设备(数码相机和手机)上。
- 一个解决方案至少应该在 WinXP 上运行(Win2000 支持会很棒)
- 不使用 WPD。
我尝试在 pidl 上调用 SHFileOperation,但它需要文件系统路径,而不是我拥有的 GUID 样式路径。 I asked about this on Experts Exchange,在那里我了解了 IFileOperation,但这需要 Windows Vista。
示例:
父文件夹:: 媒体:: {20D04FE0-3AEA-1069-A2D8-08002B30309D} \\\?\ USB#vid_04e8&pid_6860&ms_comp_mtp&samsung_android#7&69f3c26&0&0000#{6ac27878-a6fa-4155-BA85-f98f491d4f33} \ SID- {10001,SECZ9519043CHOHB,12351995904} \ {0000000C- 0000-0000-0000-000000000000} SFGAO_CANCOPY SFGAO_CANMOVE SFGAO_CANRENAME SFGAO_CANDELETE SFGAO_HASPROPSHEET SFGAO_DROPTARGET SFGAO_STORAGEANCESTOR SFGAO_FOLDER SFGAO_HASSUBFOLDER SFGAO_CONTENTSMASK 要删除的文件: 一些breathing.mp3 :: {20D04FE0-3AEA-1069-A2D8-08002B30309D} \\\?\ USB#vid_04e8&pid_6860&ms_comp_mtp&samsung_android#7&69f3c26&0&0000#{6ac27878-a6fa-4155-BA85-f98f491d4f33} \ SID- {10001,SECZ9519043CHOHB,12351995904} \ {0000001B-0000000000000000} \ {0000001B-0000000000000000} \ {000000000000} \ {0000001C-0000000000000000} \ {0000001C-0000000000000000-00000000000000 -00000000000000} \ {0000001C-0000000000000000 -00000000000000} \ {0000001C-000000000000000000 -00000000000000 -00000000000000 -00000000000000} SFGAO_CANCOPY SFGAO_CANMOVE SFGAO_CANRENAME SFGAO_CANDELETE SFGAO_HASPROPSHEET SFGAO_DROPTARGET SFGAO_STREAM【问题讨论】:
-
欢迎来到 Stack Overflow。我已经编辑了这个问题,以添加您在专家交流中提出此问题时从中学到的一些内容。我还删除了关于获取大小和时间戳的第二个问题;它与如何删除文件无关。请在一个单独的问题中询问该问题,并让这个问题仅关注删除。这样你就可以更好地回答这两个问题。
标签: c++ delphi windows-shell