Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Windows Vista introduit de nouveaux scénarios de stockage et un nouvel espace de noms de profil utilisateur. Pour prendre en compte ces nouveaux facteurs, l’ancien système permettant de désigner les dossiers standard à l’aide d’une valeur CSIDL a été remplacé. À partir de Windows Vista, ces dossiers sont référencés par un nouvel ensemble de valeurs GUID appelées ID de dossier connus.
Le système de dossiers connus offre ces avantages :
- Les éditeurs de logiciels indépendants (ISV) peuvent étendre l’ensemble des identifiants de dossiers connus en y ajoutant les leurs. Ils peuvent définir des dossiers, leur donner des ID et les inscrire auprès du système. Les valeurs CSIDL n’ont pas pu être étendues.
- Tous les dossiers connus d’un système peuvent être énumérés. Aucune API n’a fourni cette fonctionnalité pour les valeurs CSIDL. Pour plus d’informations, consultez IKnownFolderManager ::GetFolderIds.
- Un dossier connu ajouté par un éditeur de logiciels indépendants peut ajouter des propriétés personnalisées qui lui permettent d’expliquer son objectif et son utilisation prévue.
- De nombreux dossiers connus peuvent être redirigés vers de nouveaux emplacements, y compris les emplacements réseau. Sous le système CSIDL, seul le dossier Mes documents peut être redirigé.
- Les dossiers connus peuvent avoir des gestionnaires personnalisés à utiliser lors de la création ou de la suppression.
Le système et les API CSIDL qui utilisent des valeurs CSIDL sont toujours prises en charge pour la compatibilité. Toutefois, il n’est pas recommandé de les utiliser dans un nouveau développement.
Important
Pour le nouveau code, utilisez toujours SHGetKnownFolderPath avec des constantes KNOWNFOLDERID . Les anciennes valeurs SHGetFolderPath et CSIDL sont déconseillées et ne doivent pas être utilisées dans les nouvelles applications.
Lors de l'appel SHGetKnownFolderPath :
- Vous devez appeler CoInitializeEx avant d’utiliser cette fonction (COM doit être initialisé sur le thread appelant).
- Vous devez libérer la chaîne retournée avec CoTaskMemFree lorsque vous avez terminé. L’échec de cette opération provoque une fuite de mémoire.
- Pour les applications .NET, utilisez Environment.GetFolderPath ou Windows.Storage.KnownFolders (WinRT) au lieu d’appeler directement des fonctions du shell via P/Invoke.
Les rubriques suivantes décrivent les spécificités du système Dossiers connus.
- utilisation de dossiers connus dans les applications
- comment étendre des dossiers connus avec des dossiers personnalisés
- KNOWNFOLDERID
Les pages de référence suivantes expliquent les fonctions Dossiers connus Win32, qui peuvent être utilisées pour récupérer l’emplacement des dossiers connus ou les rediriger vers un nouvel emplacement. Ces fonctions remplacent les fonctions Win32 plus anciennes. Les nouvelles fonctions sont fournies pour donner un comportement équivalent aux anciennes fonctions, mais chaque nouvelle fonction est également dupliquée par une API COM (Component Object Model).
| Nouvelle fonction | Remplace | Équivalent COM |
|---|---|---|
| SHGetKnownFolderPath | SHGetFolderPath | IKnownFolder::GetPath |
| SHGetKnownFolderIDList | SHGetFolderLocation | IKnownFolder ::GetIDList |
| SHSetKnownFolderPath | SHSetFolderPath | IKnownFolder::SetPath |
Les pages de référence suivantes expliquent les API DOSSIERS CONNUS COM, qui fournissent toutes les fonctionnalités des API Win32 répertoriées ci-dessus, ainsi que la possibilité d’énumérer tous les dossiers connus, d’accéder aux propriétés de dossiers connus et d’étendre l’ensemble standard de dossiers connus.
Un exemple C++ qui illustre les API de dossier connus est inclus dans le Kit de développement logiciel Windows (SDK). Une fois que vous avez installé le Kit de développement logiciel (SDK) Windows sur votre ordinateur, l’exemple se trouve sous %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\KnownFolders.