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

时间:2015-06-27 17:29:29

标签: windows winapi filesystems explorer

Windows资源管理器提供了一个虚拟的“文件系统”,其根目录是Desktop文件夹,其中包含回收站和本/我的计算机,后者又包含已挂载的文件系统,库,UPnP / MTP / PTP设备和网络快捷方式。

Explorer

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

是这样的吗?如果是,这样的API是否公开,是否可以从我自己的应用程序中使用?

1 个答案:

答案 0 :(得分:1)

  

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

实际上,选择器会在其UI中显示一个真实的资源管理器窗口,让Explorer处理文件系统。

但是,有一个公共API,正如@JonathanPotter所提到的那样 - Shell Namespace。这与Explorer本身用于其所做的一切的API相同。

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

SHGetDesktopFolder()开始获取根Desktop文件夹的IShellFolder界面,然后您可以根据需要深入查看其层次结构,使用IShellFolder::EnumObjects()枚举子文件夹/文件, IShellFolde::BindToObject()获取子文件夹的IShellFolder接口,IShellFolder::GetDisplayNameOf()获取文件夹/文件名等等。

您可以使用Shell接口访问/执行很多操作,这甚至不会触及所有可用的表面。