C++ ShellExecute在不知道特殊文件夹名称的情况下打开特殊文件夹(例如:“Libraries\Documents”)

C++ ShellExecute在不知道特殊文件夹名称的情况下打开特殊文件夹(例如:“Libraries\Documents”),c++,winapi,directory,shellexecute,C++,Winapi,Directory,Shellexecute,我正在制作一个应用程序来备份打开的文件夹。 问题是,如果文件夹中有一些特殊文件夹(例如:“桌面”、“计算机”、“库\文档”…),它们将无法打开 我知道这些对象有常量,但我不知道将打开哪些文件夹,所以制作一个包含所有SpecialNames=>SpecialConstant的字典对我来说不是一个好的解决方案 因此,问题是: 是否有任何WinApi函数可以从特殊文件夹的短名称检索完整路径 p.S.尝试了ShellExecute(“打开”、“路径”)和ShellExecute(“打开”、“explor

我正在制作一个应用程序来备份打开的文件夹。 问题是,如果文件夹中有一些特殊文件夹(例如:“桌面”、“计算机”、“库\文档”…),它们将无法打开

我知道这些对象有常量,但我不知道将打开哪些文件夹,所以制作一个包含所有SpecialNames=>SpecialConstant的字典对我来说不是一个好的解决方案

因此,问题是: 是否有任何WinApi函数可以从特殊文件夹的短名称检索完整路径

p.S.尝试了ShellExecute(“打开”、“路径”)和ShellExecute(“打开”、“explorer.exe”、“路径”) 如果你在Explorer中粘贴名字,他们会从C++打开它们不起作用
谢谢

库以XML文件的形式存储在用户
%appdata%\Roaming\Microsoft\Windows\Libraries
目录中,文件名为
。库ms
(例如
图片。库ms
)使用
ShellExecute
打开一个浏览器窗口并显示库。

这些是虚拟文件夹,由shell命名空间扩展提供。备份虚拟文件夹没有任何意义,只需关注磁盘上的真实文件系统目录。我需要反转它们,以便在用户需要时打开它们。然后我相信您将不得不构建一个虚拟/实际路径表。是的,这是更难的方法,因为windows版本不同,等等。我会等几天,也许有人会提出一些建议,然后我会和桌子一起去。:)可能重复的感谢,这将解决图书馆的问题,但对于其他文件夹,如桌面,计算机,控制面板,你有一些建议吗?此外,我还找到了一个特殊文件夹的列表,以防我不得不为其余的文件夹建立一个字典@Spider,这篇CodeProject文章提供了您所需要的一切。只需使用表中指定的参数在资源管理器上调用ShellExecute。例如
ShellExecuteW(0,“打开”,“资源管理器”,“/N::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}”,1)
应打开控制面板。其他的,真实的,像桌面的目录可以通过老式的方式获得:使用。