Mor*_*hai 12 c++ com shell windows-shell
似乎有一些虚拟文件夹与GUID相关联(控制面板,桌面) -
:: {00021400-0000-0000-c000-000000000046} //桌面
火焰是这些定义的?他们什么时候用?
我想要的是一种方法,让一个字符串代表一个没有任何歧义的虚拟文件夹.
如果,例如,我要创建一个PIDL桌面,显示名称回来为"C:\用户\史蒂夫\桌面".
嗯,目前这是真的 - 但它不是真正的正确文件夹.我可以在资源管理器中导航到该文件夹,它包含我桌面上的部分文件,而不是整个桌面.
我想是到该位置编码为一个字符串,将始终定位到虚拟桌面文件夹(即具有的所有内容,而不仅仅是几件事情之一)的方式.
有谁知道这些GUID的最终清单?或者我如何将给定的PIDL转换成一个?
我试图SHGetDisplayName(PIDL,SHGDN_*) - 的,对于桌面PIDL每一个版本给我任何短暂的"桌面"或"C:\用户\史蒂夫\桌面".(显然我是在'史蒂夫'帐户下登录的).
想法/评论/指针?
编辑:所以我似乎可以使用下面给出的答案来获得已知文件夹GUId的列表.但有没有人以编程方式知道如何从PIDL转换 - >已知文件夹GUID?我以为我可以ParseDisplayName(":: {GUID}"),以获得PIDL,但有一种方式来获得的GUID?
编辑2:我仍然找不到以编程方式获取GUID的方法.然而,我的目的,我记录CSIDL_xxx我最初用来创建对象,并编写出与后来恢复它,然后由CSIDL,它保留了正确的标识(即方式创建一个PIDL.它不不会降级为"C:\ Users \\ Desktop",而是生成一个真正指向虚拟桌面的PIDL.
我的诀窍是始终使用CSIDL-> PIDL,永远不要在它们之间使用字符串.CSIDL-> PIDL-> string-> PIDL =退化为非虚拟路径.
感谢大家的帮助 - 我会一直在寻找是否有人发现更多关于这个主题并发布它,我会感兴趣!;)
归档时间: |
|
查看次数: |
4133 次 |
最近记录: |