已知文件夹
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 SDKs\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\KnownFolders 下找到该示例。