Carpetas conocidas

Windows Vista introduce nuevos escenarios de almacenamiento y un nuevo espacio de nombres de perfil de usuario. Para abordar estos nuevos factores, se ha reemplazado el sistema anterior de hacer referencia a carpetas estándar por un valor CSIDL . A partir de Windows Vista, se hace referencia a esas carpetas mediante un nuevo conjunto de valores GUID denominados identificadores de carpeta conocidos.

El sistema de carpetas conocidas proporciona estas ventajas:

  • Los proveedores de software independientes (ISV) pueden ampliar el conjunto de identificadores de carpeta conocidos con sus propios. Pueden definir carpetas, proporcionarles identificadores y registrarlos en el sistema. No se pudieron extender los valores CSIDL.
  • Se pueden enumerar todas las carpetas conocidas de un sistema. Ninguna API proporcionó esta funcionalidad para los valores CSIDL. Consulte IKnownFolderManager::GetFolderIds para obtener más información.
  • Una carpeta conocida agregada por un ISV puede agregar propiedades personalizadas que le permitan explicar su propósito y su uso previsto.
  • Muchas carpetas conocidas se pueden redirigir a nuevas ubicaciones, incluidas las ubicaciones de red. En el sistema CSIDL, solo se puede redirigir la carpeta Mis documentos .
  • Las carpetas conocidas pueden tener controladores personalizados para su uso durante la creación o eliminación.

El sistema CSIDL y las API que usan valores CSIDL siguen siendo compatibles. Sin embargo, no se recomienda usarlos en ningún nuevo desarrollo.

Importante

Para el nuevo código, use siempre SHGetKnownFolderPath con constantes KNOWNFOLDERID . Los valores SHGetFolderPath y CSIDL anteriores están en desuso y no deben usarse en nuevas aplicaciones.

Al llamar a SHGetKnownFolderPath:

  • Debe llamar a CoInitializeEx antes de usar esta función (COM debe inicializarse en el subproceso que realiza la llamada).
  • Debe liberar la cadena devuelta con CoTaskMemFree cuando haya terminado. Si no lo hace, se produce una pérdida de memoria.
  • En las aplicaciones .NET, use Environment.GetFolderPath o Windows.Storage.KnownFolders (WinRT) en lugar de invocar directamente funciones del shell mediante P/Invoke.

En los temas siguientes se describen los detalles del sistema De carpetas conocidas.

En las páginas de referencia siguientes se explican las funciones De carpetas conocidas de Win32, que se pueden usar para recuperar la ubicación de Carpetas conocidas o redirigirlas a una nueva ubicación. Estas funciones reemplazan a las funciones anteriores de Win32. Las nuevas funciones se proporcionan para proporcionar un comportamiento equivalente a las funciones antiguas, pero cada nueva función también está duplicada por una API del modelo de objetos componentes (COM).

Nueva función Reemplaza Equivalente COM
SHGetKnownFolderPath SHGetFolderPath IKnownFolder::GetPath
SHGetKnownFolderIDList SHGetFolderLocation IKnownFolder::GetIDList
SHSetKnownFolderPath SHSetFolderPath IKnownFolder::SetPath

 

En las páginas de referencia siguientes se explican las API de carpetas conocidas COM, que proporcionan toda la funcionalidad de las API de Win32 enumeradas anteriormente, además de agregar la capacidad de enumerar todas las carpetas conocidas, acceder a las propiedades De carpetas conocidas y ampliar el conjunto estándar de carpetas conocidas.

Un ejemplo de C++ que muestra las API de carpetas conocidas se incluye en el kit de desarrollo de software (SDK) de Windows. Una vez instalado el SDK de Windows en el equipo, el ejemplo se puede encontrar en %ProgramFiles%\Microsoft SDK\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\KnownFolders.

Ejemplo de carpetas conocidas