Поделиться через


Известные папки

В Windows Vista представлены новые сценарии хранения и новое пространство имен профиля пользователя. Чтобы устранить эти новые факторы, была заменена старая система ссылок на стандартные папки значением CSIDL . В Windows Vista на эти папки ссылается новый набор значений GUID, называемый известными идентификаторами папок.

Система известных папок предоставляет следующие преимущества:

  • Независимые поставщики программного обеспечения (ISV) могут расширить набор идентификаторов известных папок своими собственными. Они могут определять папки, предоставлять им идентификаторы и регистрировать их в системе. Не удалось расширить значения CSIDL.
  • Можно перечислить все известные папки в системе. Ни в каких API не предусмотрена эта функция для значений CSIDL. Дополнительные сведения см. в разделе IKnownFolderManager::GetFolderIds .
  • Известная папка, добавленная независимого поставщика программного обеспечения, может добавлять пользовательские свойства, которые позволяют ему объяснить ее назначение и предполагаемое использование.
  • Многие известные папки можно перенаправлять в новые расположения, включая сетевые расположения. В системе CSIDL можно перенаправить только папку Мои документы .
  • Известные папки могут иметь пользовательские обработчики для использования во время создания или удаления.

Система CSIDL и API, использующие значения CSIDL, по-прежнему поддерживаются для обеспечения совместимости. Однако использовать их в новых разработках не рекомендуется.

В следующих разделах рассматриваются особенности системы известных папок.

На следующих справочных страницах описываются функции известных папок Win32, которые можно использовать для получения расположения известных папок или перенаправления их в новое расположение. Эти функции заменяют старые функции Win32. Новые функции предоставляются для предоставления эквивалентного поведения старым функциям, но каждая новая функция также дублируется API модели com.

Новая функция Заменяет Эквивалент COM
SHGetKnownFolderPath SHGetFolderPath IKnownFolder::GetPath
SHGetKnownFolderIDList SHGetFolderLocation IKnownFolder::GetIDList
SHSetKnownFolderPath SHSetFolderPath IKnownFolder::SetPath

 

На следующих справочных страницах описываются API известных папок COM, которые предоставляют все функциональные возможности перечисленных выше API Win32, а также возможность перечисления всех известных папок, доступа к свойствам известных папок и расширения стандартного набора известных папок.

Пример C++, демонстрирующий API известных папок, включен в пакет SDK для Windows. После установки пакета Windows SDK на компьютере пример можно найти в папке %ProgramFiles%\Microsoft SDK\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\KnownFolders.

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