我有一个文件,我可以通过pidl通过IShellFolder
达到。该文件的标记为SFGAO_CANDELETE
,其父文件夹只有标记SFGAO_STORAGEANCESTOR
。如何删除标记为SFGAO_STREAM的对象?
如何删除文件?
条件:
- 文件和文件夹的USB设备(数码相机和手机)上。
- 一个解决方案应该至少在WinXP上工作(Win2000支持将是美好的)
- 没有使用WPD。
我试着在pidl上调用SHFileOperation
,但它需要一个文件系统路径,而不是我所拥有的GUID风格的路径。 I asked about this on Experts Exchange,我在那里学到了IFileOperation
,但那需要Windows Vista。
样品:
parent folder:: media ::{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 file to delete: 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
欢迎来到Stack Overflow。我已经编辑了这个问题来添加一些你在专家交流中询问过的内容。我还删除了关于获取大小和时间戳的第二个问题;它与如何删除文件无关。请在单独的问题中提出有关该问题的问题,并让这个问题仅仅关注于删除。这样你会得到更好的答案。 –