在应用程序中使用已知文件夹

已知文件夹系统提供了一种与 Windows 中默认存在的某些高配置文件文件夹交互的方法。 它还允许应用程序与安装并注册到已知文件夹系统的文件夹进行相同的交互。 本主题讨论已知文件夹 API 提供的这些可能的交互。

重要

若要将“文档”、“图片”或“桌面”文件夹重定向到 OneDrive,请使用 OneDrive 已知文件夹移动,而不是本文中所述的重定向方法。 有关信息,请参阅 将 Windows 已知文件夹重定向和移动到 OneDrive

已知文件夹接口

有两个已知文件夹接口: IKnownFolderIKnownFolderManager

IKnownFolderManager 提供了有关这些文件夹的许多更常规的功能。 其方法允许你:

  • 基于该文件夹的 KNOWNFOLDERID、规范名称、以字符串表示的路径或以 IDList 表示的路径检索 IKnownFolder
  • 将 CSIDL 转换为其 KNOWNFOLDERID 等效项,或将 KNOWNFOLDERID 转换为其旧的 CSIDL 等效项。
  • 向系统注册或注销已知文件夹。
  • 检索在该系统上注册的所有 KNOWNFOLDERID 值。
  • 将已知文件夹重定向到新位置。

IKnownFolder 提供了一种方法,该方法允许文件夹通过提供新路径来重定向自身。 其其他方法获取有关特定已知文件夹的信息,包括:

  • 文件夹的类别:虚拟、固定、通用或每用户。
  • 文件夹的类型,例如压缩文件、文档文件、图片文件或用户文件。
  • 文件夹的 KNOWNFOLDERID
  • IDList 或字符串形式的文件夹的完整路径。 此外,其父文件夹的相对路径。
  • 文件夹的规范名称。
  • 为文件夹显示的工具提示。
  • 为文件夹显示的图标。
  • 说明文件夹的说明,说明其用途和用途。
  • 文件夹是否能够重定向。

IKnownFolder 还提供基于 文件夹检索 IShellItem 的方法。 这样,便可以将文件夹绑定到处理程序,比较两个文件夹,并检索文件夹的属性、显示名称和父文件夹。

重定向

文件夹重定向是已知文件夹系统的一项重要功能。 可重定向类别 通用KF_CATEGORY_COMMON****每用户KF_CATEGORY_PERUSER**** 的所有已知文件夹。 但是,无法重定向 类别虚拟KF_CATEGORY_VIRTUAL****固定器KF_CATEGORY_FIXED****的文件夹。

文件夹可以重定向到同一计算机上的另一个位置,也可以重定向到网络上的某个位置。 对于网络重定向,可以通过客户端缓存在本地缓存文件夹,以提供脱机访问。 但是,即使存在本地缓存,也必须通过网络访问重定向的文件夹本身。

文件夹重定向对于 Windows Vista 来说并不新。 例如,在 Windows XP 中,可以通过调用 SHSetFolderPath 或通过在注册表中修改 CSIDL 的条目来重定向通过 CSIDL 系统标识的某些文件夹。 在 Windows Vista 及更高版本中,重定向应通过 IKnownFolder::SetPathSHSetKnownFolderPath 完成。

若要确定是否可以重定向文件夹,请调用 IKnownFolder::GetRedirectionCapabilities。 如果无法重定向文件夹,此调用可以提供解释。

如果将文件夹重定向到网络位置,则仍可成功在其上调用 IKnownFolder 方法。

已知文件夹示例