我有一个通过
要删除的文件: some 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}\{0000000C-0000-0000-0000-000000000000}\{0000001B-0000-0000-0000-000000000000}\{0000001C-0000-0000-0000-000000000000}\{00000021-0000-0000-0000-000000000000} SFGAO_CANCOPY SFGAO_CANMOVE SFGAO_CANRENAME SFGAO_CANDELETE SFGAO_HASPROPSHEET SFGAO_DROPTARGET SFGAO_STREAM
IShellFolder
可以访问的文件。该文件具有标志SFGAO_CANDELETE
,其父文件夹仅具有标志SFGAO_STORAGEANCESTOR
。
如何删除该文件?
条件:
- 文件和文件夹位于USB设备上(数码相机和手机)。
- 解决方案至少在WinXP上可用(支持Win2000将是非常好的)。
- 不使用WPD。
我尝试在pidl上调用SHFileOperation
,但它需要一个文件系统路径,而不是GUID样式的路径。我在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要删除的文件: some 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}\{0000000C-0000-0000-0000-000000000000}\{0000001B-0000-0000-0000-000000000000}\{0000001C-0000-0000-0000-000000000000}\{00000021-0000-0000-0000-000000000000} SFGAO_CANCOPY SFGAO_CANMOVE SFGAO_CANRENAME SFGAO_CANDELETE SFGAO_HASPROPSHEET SFGAO_DROPTARGET SFGAO_STREAM