已知文件夹

Windows Vista 引入了新的存储方案和新的用户配置文件命名空间。 为了解决这些新因素,已替换 CSIDL 值引用标准文件夹的较旧系统。 从 Windows Vista 起,这些文件夹由一组名为“已知文件夹 ID”的新 GUID 值引用。

已知文件夹系统具有以下优势:

  • 独立软件供应商(ISV)可以自行扩展已知文件夹 ID 集。 他们可以定义文件夹、向其提供 ID,并将其注册到系统。 无法扩展 CSIDL 值。
  • 可以枚举系统上的所有已知文件夹。 没有 API 为 CSIDL 值提供此功能。 有关详细信息,请参阅 IKnownFolderManager::GetFolderIds
  • ISV 添加的已知文件夹可以添加自定义属性,以使其解释其用途和预期用途。
  • 许多已知文件夹可以重定向到新位置,包括网络位置。 在 CSIDL 系统下,只能重定向“我的文档”文件夹
  • 已知文件夹可以具有自定义处理程序,以便在创建或删除期间使用。

仍支持使用 CSIDL 值的 CSIDL 系统和 API 来实现兼容性。 但是,不建议在任何新开发中使用它们。

以下主题讨论已知文件夹系统的具体内容。

以下参考页说明了 Win32 已知文件夹函数,这些函数可用于检索已知文件夹的位置或将它们重定向到新位置。 这些函数替换旧的 Win32 函数。 提供了新函数来提供与旧函数等效的行为,但每个新函数也由组件对象模型 (COM) API 复制。

新建函数 取代 COM 等效项
SHGetKnownFolderPath SHGetFolderPath IKnownFolder::GetPath
SHGetKnownFolderIDList SHGetFolderLocation IKnownFolder::GetIDList
SHSetKnownFolderPath SHSetFolderPath IKnownFolder::SetPath

 

以下参考页介绍了 COM 已知文件夹 API,这些 API 提供上面列出的 Win32 API 的所有功能,并添加了枚举所有已知文件夹、访问已知文件夹属性和扩展已知文件夹的标准集的功能。

演示已知文件夹 API 的C++示例包含在 Windows 软件开发工具包 (SDK) 中。 在计算机上安装 Windows SDK 后,可以在 %ProgramFiles%\Microsoft SDK\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\KnownFolders 下找到该示例。

已知文件夹示例