Explorer的“虚拟文件系统”是否具有公共API?

问题描述:

Windows资源管理器提供一个虚拟的“文件系统”,其根目录是Desktop文件夹,其中包含回收站和本机/我的电脑,后者又包含已安装的文件系统,库,UPnP/MTP/PTP设备和网络快捷方式。Explorer的“虚拟文件系统”是否具有公共API?

Explorer

所用的相同的布局可以在内置的打开/保存/目录选择器对话框中可以观察到,可以假设有一个(内?)API揭露这个“VFS”。

这是这种情况?如果是的话,这样的API是否公开并且可以从我自己的应用程序中使用?

+2

它被称为[Shell命名空间](https://msdn.microsoft.com/en-us/library/windows/desktop/cc144090(v = vs.85).aspx)。 –

鉴于在内置open/save /目录选取器对话框中可以观察到相同的布局,可以假设有一个(内部?)API公开此“VFS”。

实际上,采集器显示一个嵌入其UI中的真正的资源管理器窗口,并让资源管理器处理文件系统。

但是,有一个公共API,如@JonathanPotter提到的 - Shell Namespace。这与资源管理器本身使用的API几乎相同。

文件夹和文件表示为ITEMIDLIST标识符,可以使用IShellFolderIShellItem接口(以及其他)访问。

开始SHGetDesktopFolder()得到IShellFolder接口根桌面文件夹,然后你可以通过它的层次结构,需要向下钻取,使用IShellFolder::EnumObjects()枚举子文件夹/文件,IShellFolde::BindToObject()获得IShellFolder接口,子文件夹,IShellFolder::GetDisplayNameOf()得到文件夹/文件名等。

有很多你可以访问/使用Shell界面,这甚至没有抓住所有可用的表面。