Verteiltes Link-Tracking und Objekt-Identifikatoren

Das Speichern eines Verweises auf eine Datei oder ein Verzeichnis über den Pfad und den Dateinamen ist nicht zuverlässig. Wenn Benutzer*innen eine Datei umbenennen, werden die Links zu dieser Datei zerstört. Wenn Benutzer*innen ein Verzeichnis umbenennen, werden die Links zu dieser Datei sowie zu allen Dateien und Unterverzeichnissen im Verzeichnisbaum zerstört.

Der Distributed Link Tracking Dienst ermöglicht es Client-Anwendungen, Link-Quellen zu verfolgen, die sich verschoben haben. Clients, die den Linktracking-Dienst abonnieren, können die Integrität ihrer Verweise aufrechterhalten, und die Objekte können auf eine für den Benutzer*innen transparente Weise verfolgt werden.

Objektbezeichner

Der Linktracking-Dienst behält seinen Link zu einem Objekt bei, indem er einen Objektidentifikator (ID) verwendet. Eine Objekt-ID ist ein optionales Attribut, das eine Datei oder ein Verzeichnis auf einem Volume eindeutig identifiziert.

Ein Index aller Objekt-IDs wird auf dem Volume gespeichert. Bei Umbenennungs-, Sicherungs- und Wiederherstellungsvorgängen bleiben die Objekt-IDs erhalten. Bei Kopiervorgängen bleiben die Objekt-IDs jedoch nicht erhalten, da dies ihre Einzigartigkeit beeinträchtigen würde.

Sie können die folgenden Vorgänge mit Objekt-IDs durchführen:

  • Erstellung
  • Löschen
  • Abfrage

Wenn Sie eine Objekt-ID erstellen, legen Sie die Identität der Datei für den Linktracking-Dienst fest. Wenn Sie dagegen eine Objekt-ID löschen, stellt der Linktracking-Dienst die Pflege der Links zu dieser Datei ein. Eine Liste der Steuercodes des Dateisystems, die Vorgänge mit Objekt-IDs durchführen, finden Sie unter Steuercodes der Dateiverwaltung.

Der verteilte Linktracking-Dienst verfolgt Link-Quellen für Shell-Verknüpfungen und OLE-Links innerhalb von NTFS-Dateisystem-Volumes. Der Link-Client kann einen defekten Link mit aktualisierten Informationen über den neuen Standort der Link-Quelle reparieren.

Shell-Verknüpfungen enthalten eine heuristische Link-Verfolgung, die einen Baum-Suchalgorithmus verwendet, um eine Übereinstimmung mit einer verschobenen Link-Quelle zu finden. Der Suchalgorithmus basiert auf dem letzten bekannten Pfad der Datei und auf Dateiinformationen wie Erstellungsdatum, Dateigröße, Dateiname und Erweiterung.

Die OLE-Verknüpfung enthält das gleiche heuristische Linktracking. Windows enthält ebenfalls das gleiche heuristische Linktracking mit einigen zusätzlichen Verbesserungen für die Suche nach Namensräumen, um in einigen allgemeinen Szenarien Ergebnisse zu erzielen. Zu den Verbesserungen gehört das folgende Verfahren, das von den Zeitbeschränkungen einer Client-Anwendung abhängt.

Für die Suche nach Namensräumen

  1. Suchen im letzten Verzeichnis vier Verzeichnisebenen tiefer.
  2. Ein Verzeichnis nach oben gehen und die Schritte 1 und 2 noch dreimal wiederholen, was zu Ergebnissen führen kann, wenn sich das Objekt in der Nähe bewegt hat.
  3. Suchen in vier Ebenen unterhalb des Roots des Desktops, was zu Ergebnissen führen kann, wenn das Objekt an einen Ort auf demselben Desktop umgezogen ist.
  4. Suchen in jedem lokalen Festplattenlaufwerk vier Ebenen unterhalb des Roots.
  5. Wiederholen der Schritte 1-3 ohne die Begrenzung auf vier Verzeichnisse.

Hinweis

Diese Linktracking-Verfahren sind für die Benutzer*innen transparent. Sie führen jedoch nicht immer zu positiven Ergebnissen und können sehr zeitaufwändig sein.

 

Weitere Informationen über Shell-Verknüpfungen finden Sie unter IShellLink.

Weitere Informationen über OLE-Links finden Sie unter IOleLink.

Wenn ein Link zu einer Datei auf NTFS 3.0 oder höher erstellt wird und die Datei auf ein beliebiges anderes Volume mit NTFS 3.0 oder höher innerhalb der gleichen Domäne verschoben wird, kann die Datei vom Tracking-Dienst gefunden werden, sofern dies zeitlich möglich ist. Auch wenn die Datei außerhalb der Domäne oder innerhalb einer Arbeitsgruppe verschoben wird, wird sie gefunden.

Um die NTFS-Version eines Volumes abzurufen, öffnen Sie eine Eingabeaufforderung mit Administratorzugriffsrechten und führen Sie den folgenden Befehl aus

fsutil fsinfo ntfsinfo X:

Wobei X der Laufwerksbuchstabe des Volumes ist.

Wenn ein Link zu einer Datei erstellt wird, gilt die Zieldatei als Linkquelle und der Ersteller des Links als Link-Client. Wenn beispielsweise eine Shell-Verknüpfung erstellt wird, um einen Link zu einem Textdokument zu erstellen, ist das Textdokument die Link-Quelle und die Shell-Verknüpfung ist der Link-Client.

Der verteilte Linktracking-Dienst verwaltet Dateilinks für die folgenden Situationen, die innerhalb einer Domäne auftreten:

  • Die Link-Quelldatei wird von einem NTFS-Dateisystem-Volume auf ein anderes innerhalb derselben Domäne verschoben.
  • Der Name des Computers, auf dem sich die Link-Quelle befindet, wird umbenannt.
  • Die Netzwerkfreigaben auf dem Link-Quellcomputer werden geändert.
  • Das Volume, auf dem sich die Link-Quelldatei befindet, wird auf einen anderen Computer innerhalb der gleichen Domäne verschoben.

Der verteilte Linktracking-Dienst versucht, Links in den oben genannten Situationen auch dann zu erhalten, wenn sie nicht innerhalb einer Domäne auftreten, d. h. domänenübergreifend oder innerhalb einer Arbeitsgruppe sind. Links können in diesen Situationen immer beibehalten werden, wenn die Netzwerkfreigabe auf dem Link-Quellcomputer geändert wird. Sie können auch beibehalten werden, wenn eine Link-Quelle innerhalb eines Computers verschoben wird. Links können in der Regel beibehalten werden, wenn die Linkquelle auf einen anderen Computer verschoben wird, aber diese Form des Linktrackings ist im Laufe der Zeit weniger zuverlässig.

Die Funktionalität des Linktrackings wird in erster Linie in Form der folgenden zwei Systemdienste implementiert:

  • Überwachung verteilter Verknüpfungen (Client)
  • Server für die Überwachung verteilter Verknüpfungen

Überwachung verteilter Verknüpfungen (Client)

Der verteilte Client für das Linktracking wird auf allen Computern ausgeführt und verwaltet die Aktivitäten des Linktrackings für diesen Computer. Zu diesen Aktivitäten gehören die Suche nach Link-Quellen und die Verarbeitung von Link-Quellen-Verschiebungen. Wenn eine Link-Quelle verschoben wird, leitet der Dienst Informationen an den verteilten Linktracking-Server weiter, der auf den Domänencontrollern ausgeführt wird.

Server für die Überwachung verteilter Verknüpfungen

Der verteilte Linktracking-Server wird auf jedem Domänencontroller in einer Domäne ausgeführt. Der Dienst nimmt Benachrichtigungen über Datei- und Volume-Verschiebungen vom Tracking-Dienst auf einem Computer entgegen und lässt den verteilten Client für das Linktracking die Möglichkeit zu, den aktuellen Speicherort einer Link-Quelle abzufragen.

Dieser Dienst verwaltet in den Domänencontrollern Informationen über Volumes und Dateien, die verschoben wurden. Die Informationen über Verschiebungen können eine bestimmte Größe nicht überschreiten und werden automatisch entfernt, wenn sie überflüssig werden.

Die Dienste für das Linktracking werden über die Schnittstellen IShellLink und IOleLink bereitgestellt. Daher werden sie von den Shell-Verknüpfungen verwendet. Wenn die Methode IShellLink::Resolve aufgerufen wird und die referenzierende Datei nicht gefunden werden kann, z. B. wenn der/die Benutzer*in eine Shell-Verknüpfung aktiviert, wird der Tracking-Dienst automatisch aufgerufen, um die Datei zu finden. Ähnlich verhält es sich, wenn die IOleLink-Implementierung eine Datei nicht finden kann, z. B. in ihrer BindToSource-Methode, dann ruft sie automatisch den Tracking-Dienst auf.

Die verteilten Linktracking-Dienste sind nur auf dem NTFS-Dateisystem verfügbar und stehen nur für Link-Quellen auf NTFS 3.0 oder höher zur Verfügung. Wenn also eine Link-Quelle auf ein FAT-Dateisystem-Volume verschoben wird, gehen die Tracking-Informationen verloren. Wenn eine Link-Quelle zwischen NTFS 3.0 oder höher verschoben wird, der Computer, auf dem die Verschiebung durchgeführt wird, jedoch eine frühere Version von Windows ausführt, gehen die Linktracking-Informationen ebenfalls verloren. Wenn die Linktracking-Informationen verloren gehen, wird die Link-Quelldatei selbst nicht beschädigt, sie kann nur nicht mehr von den verteilten Linktracking-Diensten verfolgt werden.

Um die NTFS-Version eines Volumes abzurufen, öffnen Sie eine Eingabeaufforderung mit Administratorzugriffsrechten und führen Sie den folgenden Befehl aus

fsutil fsinfo ntfsinfo X:

Wobei X der Laufwerksbuchstabe des Volumes ist.

Links zu Dateien auf Wechseldatenträgern werden nicht beibehalten. Außerdem erkennt der Tracking-Dienst ein neues NTFS-Dateisystem-Volume erst, wenn das System neu gestartet wird. Ein neues Volume kann durch eine Neupartitionierung, die Neuformatierung eines FAT-Dateisystem-Volumes in das NTFS-Dateisystem oder den Anschluss eines neuen externen Laufwerks verfügbar werden.