Работа с известными папками в приложениях

Система известных папок позволяет взаимодействовать с определенными высокопрофильными папками, которые по умолчанию присутствуют в Windows. Он также позволяет выполнять те же действия с папками, установленными и зарегистрированными в системе известных папок приложениями. В этом разделе рассматриваются возможные взаимодействия, предоставляемые API известных папок.

Важно!

Чтобы перенаправить папки "Документы", "Изображения" или "Рабочий стол" в OneDrive, используйте перенос известных папок OneDrive вместо метода перенаправления, описанного в этой статье. Дополнительные сведения см. в статье Перенаправление и перемещение известных папок Windows в OneDrive.

Известные интерфейсы папок

Существует два интерфейса известных папок: IKnownFolder и IKnownFolderManager.

IKnownFolderManager предоставляет многие из более общих функций в отношении этих папок. Его методы позволяют:

  • Получите IKnownFolder на основе значения KNOWNFOLDERID этой папки, ее канонического имени, пути, выраженного в виде строки, или пути, выраженного как IDList.
  • Преобразуйте 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 некоторые папки, определенные системой CSIDL, можно перенаправить с помощью вызова SHSetFolderPath или путем изменения записи CSIDL в реестре. В Windows Vista и более поздних версиях перенаправление должно выполняться через IKnownFolder::SetPath или SHSetKnownFolderPath.

Чтобы определить, можно ли перенаправить папку, вызовите IKnownFolder::GetRedirectionCapabilities. Если не удается перенаправить папку, этот вызов может дать объяснение.

Если папка перенаправляется в сетевое расположение, методы IKnownFolder по-прежнему могут быть успешно вызваны для нее.

Пример: известные папки