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