Suivi des liaisons distribuées et identificateurs d’objet
Stocker une référence à une liaison ou un répertoire à l'aide du nom du fichier et du chemin d'accès n'est pas une méthode fiable. En effet, si un utilisateur renomme un fichier, les liaisons ne fonctionneront plus. De même, si un utilisateur renomme un répertoire, les liaisons vers tous les dossiers et sous-dossiers de l'arborescence ne fonctionneront plus.
Le service de suivi des liaisons distribuées permet aux applications clientes de suivre les sources de liaisons qui ont été déplacées. Les clients qui s’abonnent au service de suivi des liaisons peuvent maintenir l’intégrité de leurs références et suivre les objets de manière transparente.
Identificateur d’objet
Le service de suivi des liaisons permet de conserver une liaison vers un objet à l’aide d’un identificateur d’objet (ID). Un ID d’objet est un attribut facultatif qui identifie de manière unique un fichier ou un répertoire sur un volume.
Un index de tous les ID d’objet est stocké sur le volume. Même si vous renommez, sauvegardez ou restaurez vos opérations, l'ID de l'objet est conservé. Toutefois, les opérations de copie ne conservent pas les ID d’objet, car ils ne seraient alors plus uniques.
Vous pouvez effectuer les opérations suivantes sur les ID d'objet :
- Création
- Suppression
- Requête
Lorsque vous créez un ID d’objet, vous établissez l’identité du fichier auprès du service de suivi des liaisons. À l’inverse, lorsque vous supprimez un ID d’objet, le service de suivi des liaisons cesse de conserver les liaisons vers le fichier. Pour obtenir la liste des codes de contrôle du système de fichiers qui effectue des opérations sur les ID d’objet, consultez Codes de contrôle de gestion des fichiers.
Le service de suivi des liaisons distribué recherche les sources de liaisons pour trouver des raccourcis shell et les liaisons OLE dans les volumes du système de fichiers NTFS. Le client de liaisons peut corriger une liaison rompue grâce à des informations actualisées sur le nouvel emplacement de la source de la liaison.
Fonctionnalités de suivi des liaisons
Les raccourcis shell incluent le suivi des liaisons heuristique. Celui-ci utilise un algorithme de recherche d’arborescence afin de trouver une correspondance pour une source de liaison ayant été déplacée. L’algorithme de recherche est basé sur le dernier chemin d’accès connu du fichier et des informations de celui-ci (par exemple, la date de création, la taille, le nom et l'extension du fichier).
Le même système de suivi des liaisons heuristique est utilisé pour les liaisons OLE. Windows inclut également ce suivi des liaisons heuristique, avec quelques améliorations ajoutées pour la recherche d’espaces de noms afin de générer des résultats dans certains cas de figure courants. Parmi ces améliorations, la procédure suivante a été ajoutée. Elle dépend des limites de temps imposées par une application cliente.
Pour rechercher des espaces de noms
- Effectuez la recherche quatre niveaux au-dessus du dernier répertoire.
- Remontez d'un répertoire, puis répétez les étapes 1 et 2 trois fois. Cela peut générer des résultats si l’objet a été déplacé à proximité.
- Recherchez quatre niveaux à partir de la racine du bureau. Cela peut générer des résultats si l’objet a été déplacé vers un emplacement sur ce bureau.
- Recherchez quatre niveaux à partir de la racine sur chaque lecteur fixe local.
- Répétez les étapes 1 à 3 sans la limite de quatre répertoires.
Remarque
Ces schémas de suivi des liaisons sont transparents pour l’utilisateur final. Toutefois, ils ne produisent pas toujours de résultats convaincants et peuvent prendre du temps.
Pour en savoir plus sur les raccourcis shell, consultez IShellLink.
Pour en savoir plus sur les liaisons OLE, consultez IOleLink.
Si une liaison est établie vers un fichier sur NTFS version 3.0 ou ultérieure, et que le fichier est déplacé vers un autre volume avec NTFS version 3.0 ou ultérieure dans le même domaine, le service de suivi peut trouver le fichier, selon les délais impartis. Il peut également trouver un fichier déplacé en dehors du domaine ou dans un groupe de travail.
Pour obtenir la version NTFS d’un volume, ouvrez une invite de commandes avec les droits d’accès administrateur, puis exécutez la commande suivante :
fsutil fsinfo ntfsinfo X:
où X X correspond à la lettre du lecteur.
Lorsqu’une liaison est créée vers un fichier, le fichier cible est considéré comme la source de la liaison, et son créateur est le client de la liaison. Par exemple, si un raccourci shell sert à créer une liaison vers un document texte, le document texte est la source de la liaison et le raccourci shell est le client de liaison.
Le service de suivi des liaisons distribuées gère les liaisons de fichiers dans les situations suivantes au sein d'un domaine :
- Le fichier source de la liaison est déplacé d'un volume de système de fichiers NTFS vers un autre au sein du même domaine.
- L’ordinateur qui contient la source de liaison est renommé.
- Les partages réseau sur l’ordinateur source de la liaison sont modifiés.
- Le volume qui contient le fichier source de la liaison est déplacé vers un autre ordinateur au sein du même domaine.
Le service de suivi des liaisons distribuées tente également de maintenir des liaisons dans les situations précédentes, même s’ils ne se produisent pas dans un domaine. Autrement dit, ce service est inter-domaines ou concerne un groupe de travail. Les liaisons peuvent toujours être conservées dans les situations où le partage réseau sur l’ordinateur source de la liaison est modifié. Ils peuvent également être conservés lorsqu’une source de liaison est déplacée au sein d'un même ordinateur. Les liaisons peuvent généralement être conservées lorsque la source de liaison est déplacée vers un autre ordinateur. Toutefois, cette méthode de suivi est moins fiable au fil du temps.
Fonctionnalité de suivi des liaisons
La fonctionnalité de suivi des liaisons se présente sous la forme des deux services système suivants :
- Client de suivi de liaisons distribuées
- Serveur de suivi de lien distribué
-
Client de suivi de liaisons distribuées
-
Le client de suivi des liaisons distribuées s’exécute sur tous les ordinateurs et gère les activités de suivi des liaisons pour cet ordinateur. Ces activités incluent la recherche et le traitement de sources de liaisons. Lorsqu’une source de liaison est déplacée, le service transmet des informations au serveur de suivi de liaisons distribuées qui s’exécute sur les contrôleurs de domaine.
-
Serveur de suivi de lien distribué
-
Il s’exécute sur chaque contrôleur de domaine. Le service accepte les notifications de déplacement de fichiers et de volumes à partir du service de suivi sur un ordinateur. Il permet au client de suivi des liaisons distribuées d’interroger l’emplacement actuel d’une source de liaison.
Ce service serveur conserve des informations dans les contrôleurs de domaine à propos des volumes et des fichiers qui ont été déplacés. Les informations sur les déplacements ne peuvent pas dépasser une taille spécifique et elles sont automatiquement supprimées si elles ne sont plus nécessaires.
Les services de suivi des liens sont exposés par les interfaces IShellLink et IOleLink. Par conséquent, ils sont utilisés par les raccourcis shell. Lorsque la méthode IShellLink::Resolve est appelée et que le fichier de référence est introuvable (par exemple, lorsque l'utilisateur active un raccourci shell), le service de suivi est appelé automatiquement pour chercher le fichier. De même, lorsque l'implémentation IOleLink ne parvient pas à trouver un fichier (par exemple, avec la méthode BindToSource), elle appelle automatiquement le service de suivi.
Limites du suivi des liaisons
Les services de suivi de liaisons distribuées sont disponibles uniquement sur le système de fichiers NTFS. Ils ne sont disponibles pour les sources de liaisons que sur NTFS version 3.0 ou ultérieure. Par conséquent, si une source de liaison est déplacée vers un volume de système de fichiers FAT, les informations de suivi sont perdues. Par ailleurs, si une source de liaison est déplacée dans le NTFS version 3.0 ou ultérieure, mais que l’ordinateur qui effectue le déplacement exécute une version antérieure de Windows, les informations de suivi des liaisons sont perdues. Dans ce cas, le fichier source de la liaison n'est pas corrompu, mais il ne pourra plus être suivi par les services de suivi des liaisons distribuées.
Pour obtenir la version NTFS d’un volume, ouvrez une invite de commandes avec les droits d’accès administrateur, puis exécutez la commande suivante :
fsutil fsinfo ntfsinfo X:
où X X correspond à la lettre du lecteur.
Les liaisons vers des fichiers sur un support amovible ne sont pas conservées. Par ailleurs, le service de suivi ne reconnaît pas un nouveau volume de système de fichiers NTFS tant que le système n’est pas redémarré. Un nouveau volume peut devenir disponible à l'aide d'un re-partitionnement, du reformatage d’un volume de système de fichiers FAT vers le système de fichiers NTFS ou de la connexion d’un nouveau lecteur externe.