已知文件夹
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 已知文件夹 API,这些 API 提供上面列出的 Win32 API 的所有功能,并添加了枚举所有已知文件夹、访问已知文件夹属性和扩展已知文件夹的标准集的功能。
演示已知文件夹 API 的C++示例包含在 Windows 软件开发工具包 (SDK) 中。 在计算机上安装 Windows SDK 后,可以在 %ProgramFiles%\Microsoft SDK\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\KnownFolders 下找到该示例。