我有一个文件,可以通过pidt通过IShellFolder
到达。该文件具有标志SFGAO_CANDELETE
,其父文件夹仅具有标志SFGAO_STORAGEANCESTOR
。
如何删除文件?
条件:
我尝试在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&ssamsung_android#7&69f3c26&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33},-CID {1995} 0000-0000-0000-000000000000}
SFGAO_CANCOPY
SFGAO_CANMOVE
SFGAO_CANRENAME
SFGAO_CANDELETE
SFGAO_HASPROPSHEET
SFGAO_DROPTARGET
SFGAO_STORAGEANCESTOR
SFGAO_FOLDER
SFGAO_HASSUBFOLDER
SFGAO_CONTENTSMASK
删除文件:
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} {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
最佳答案
上个月在C++ Builder Journal论坛上看到the answer I posted这个问题(来自您吗?)。简而言之,我在任何地方都能找到的唯一有记载的方法是检索父文件夹的IContextMenu
接口(interface),然后在所需文件上调用delete
动词。
关于c++ - 如何删除标记为SFGAO_STREAM的对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7711205/