代码之家  ›  专栏  ›  技术社区  ›  Mordachai

所有著名的虚拟文件夹GUID都是什么?

  •  12
  • Mordachai  · 技术社区  · 16 年前

    :{00021400-0000-0000-c000-0000000000 46}//桌面

    这些火焰的定义是什么?什么时候使用?

    我想要的是一种方法,让一个字符串代表一个虚拟文件夹,没有任何歧义。

    嗯,目前确实如此,但它并不是正确的文件夹。我可以在资源管理器中导航到该文件夹,它包含我桌面上的一部分文件,而不是整个桌面。

    有人知道这样的guid的最终列表吗?或者如何将给定的PIDL转换为一个PIDL?

    我尝试了SHGetDisplayName(pidl,SHGDN_*)-桌面pidl的每个版本都会给我一个简短的“桌面”或“C:\Users\Steve\desktop”(显然,我是以“史蒂夫”帐户登录的)。

    编辑:看来我可以使用下面给出的答案来列出已知的文件夹GUID。但是否有人知道如何通过编程从PIDL转换->已知文件夹GUID?我假设我可以解析DisplayName(“::{guid}”)来获取PIDL,但是有方法获取guid吗?

    EDIT2:我仍然找不到一种通过编程方式访问GUID的方法。但是,出于我的目的,我正在记录最初用于创建对象的CSIDL_xxx,并将其写出&稍后将其还原,然后通过CSIDL创建一个PIDL,该PIDL保留其正确标识(即,它不会降级为“C:\Users\\Desktop”,而是生成一个真正指向虚拟桌面的PIDL)。

    谢谢大家的帮助——如果有人找到更多关于这个主题的信息并发布,我会继续寻找,我会感兴趣的!)

    2 回复  |  直到 16 年前
        1
  •  5
  •   Georg Fritzsche    16 年前
        2
  •  1
  •   Luke    16 年前

    我认为这些guid没有正式的文档记录。您可以使用SHGetPathFromIDList()获取GUID。它将指示失败,但如果查看pszPath参数,您将看到它填充了GUID(但是,第一个字符设置为NULL)。除此之外,您还可以找到其他人发现的各种guid列表。

    编辑:我发现了一些有趣的链接;似乎可以通过搜索注册表来发现这些guid。

    A forum posting about shell GUIDs

    Control Panel GUIDs

    How shell namespaces are installed

    推荐文章