Verteilte Linknachverfolgung und Objektbezeichner

Das Speichern eines Verweises auf eine Datei oder ein Verzeichnis mithilfe des Pfads und Dateinamens ist nicht zuverlässig. Wenn ein Benutzer eine Datei umbenennt, unterbricht er die Links zur Datei. Wenn ein Benutzer das Verzeichnis umbenennt, unterbricht er die Links zur Datei sowie zu allen Dateien und Unterverzeichnissen in der Verzeichnisstruktur.

Der Distributed Link Tracking-Dienst ermöglicht Clientanwendungen das Nachverfolgen von Linkquellen, die verschoben wurden. Clients, die den Linknachverfolgungsdienst abonnieren, können die Integrität ihrer Verweise beibehalten, und die Objekte können für den Benutzer transparent nachverfolgt werden.

Objektbezeichner

Der Linknachverfolgungsdienst verwaltet seine Verknüpfung mit einem Objekt, indem er eine Objekt-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. Umbenennungs-, Sicherungs- und Wiederherstellungsvorgänge behalten Objekt-IDs bei. Kopiervorgänge behalten jedoch keine Objekt-IDs bei, da dies ihre Eindeutigkeit verletzen würde.

Sie können die folgenden Vorgänge für Objekt-IDs ausführen:

  • Erstellung
  • Löschen
  • Abfrage

Wenn Sie eine Objekt-ID erstellen, richten Sie die Identität der Datei für den Linknachverfolgungsdienst ein. Wenn Sie hingegen eine Objekt-ID löschen, beendet der Linknachverfolgungsdienst die Verwaltung von Links zur Datei. Eine Liste der Dateisystemsteuerungscodes, die Vorgänge für Objekt-IDs ausführen, finden Sie unter Dateiverwaltungssteuerungscodes.

Der Distributed Link Tracking-Dienst verfolgt Linkquellen für Shellverknüpfungen und OLE-Links innerhalb von NTFS-Dateisystemvolumes nach. Der Linkclient kann einen fehlerhaften Link mit aktualisierten Informationen am neuen Speicherort der Linkquelle beheben.

Shellverknüpfungen umfassen die heuristische Linknachverfolgung, die einen Baumsuchalgorithmus verwendet, um eine Übereinstimmung für eine verschobene Linkquelle zu finden. Der Suchalgorithmus basiert auf dem letzten bekannten Pfad der Datei- und Dateiinformationen, der das Erstellungsdatum, die Dateigröße sowie den Dateinamen und die Erweiterung enthält.

OLE-Verknüpfungen umfassen die gleiche heuristische Linknachverfolgung. Windows umfasst auch die gleiche heuristische Linknachverfolgung mit einigen zusätzlichen Verbesserungen für die Suche nach Namensräumen, um ergebnisse in einigen gängigen Szenarien zu erzielen. Zu den Verbesserungen gehört das folgende Verfahren, das von den von einer Clientanwendung auferlegten Zeitlimits abhängt.

So suchen Sie nach Namensräumen

  1. Durchsuchen Sie vier Verzeichnisebenen nach unten im letzten Verzeichnis.
  2. Verschieben Sie ein Verzeichnis nach oben, und wiederholen Sie die Schritte 1 und 2 dreimal, was zu Ergebnissen führen kann, wenn das Objekt in der Nähe verschoben wurde.
  3. Suchen Sie vier Ebenen nach unten aus dem Desktopstamm, was Ergebnisse liefern kann, wenn das Objekt an einen Speicherort auf demselben Desktop verschoben wurde.
  4. Durchsuchen Sie vier Ebenen nach unten vom Stamm auf jedem lokalen Festplattenlaufwerk.
  5. Wiederholen Sie die Schritte 1 bis 3 ohne das Vier-Verzeichnis-Limit.

Hinweis

Diese Linknachverfolgungsschemas sind für den Endbenutzer transparent. Sie liefern jedoch nicht immer positive Ergebnisse und können zeitaufwändig sein.

 

Weitere Informationen zu Shellverknüpfungen finden Sie unter IShellLink.

Weitere Informationen zu OLE-Links finden Sie unter IOleLink.

Wenn ein Link zu einer Datei unter NTFS 3.0 oder höher hergestellt wird und die Datei auf ein beliebiges anderes Volume mit NTFS 3.0 oder höher innerhalb derselben Domäne verschoben wird, kann die Datei vom Nachverfolgungsdienst gefunden werden, sofern zeitüberlegungen. Wenn die Datei außerdem 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 ntfsinfoX:

wobei X der Laufwerkbuchstabe des Volumes ist.

Wenn ein Link zu einer Datei erstellt wird, gilt die Zieldatei als Linkquelle, und der Ersteller des Links ist der Linkclient. Wenn beispielsweise eine Shellverknüpfung zum Verknüpfen mit einem Textdokument erstellt wird, ist das Textdokument die Linkquelle, und die Shellverknüpfung ist der Linkclient.

Der Distributed Link Tracking-Dienst verwaltet Dateilinks für die folgenden Situationen, die innerhalb einer Domäne auftreten:

  • Die Linkquelldatei wird von einem NTFS-Dateisystemvolume in ein anderes innerhalb derselben Domäne verschoben.
  • Der Name des Computers, der die Linkquelle enthält, wird umbenannt.
  • Die Netzwerkfreigaben auf dem Linkquellcomputer werden geändert.
  • Das Volume, das die Linkquelldatei enthält, wird auf einen anderen Computer in derselben Domäne verschoben.

Der Distributed Link Tracking-Dienst versucht auch, Links in den vorherigen Situationen beizubehalten, auch wenn sie nicht innerhalb einer Domäne auftreten, d. h. sie sind domänenübergreifend oder innerhalb einer Arbeitsgruppe. Verbindungen können in diesen Situationen immer beibehalten werden, wenn die Netzwerkfreigabe auf dem Linkquellcomputer geändert wird. Sie können auch beibehalten werden, wenn eine Linkquelle innerhalb eines Computers verschoben wird. Links können normalerweise beibehalten werden, wenn die Linkquelle auf einen anderen Computer verschoben wird, aber diese Form der Nachverfolgung ist im Laufe der Zeit weniger zuverlässig.

Die Linknachverfolgungsfunktion wird hauptsächlich in Form der folgenden beiden Systemdienste implementiert:

  • Überwachung verteilter Verknüpfungen (Client)
  • Distributed Link Tracking Server

Client für die Nachverfolgung von verteilten Links

Der Client für die Nachverfolgung verteilter Links wird auf allen Computern ausgeführt und verwaltet die Linknachverfolgungsaktivitäten für diesen Computer. Zu diesen Aktivitäten gehören die Suche nach Linkquellen und die Verarbeitung von Linkquellenverschiebungen. Wenn eine Linkquelle verschoben wird, übergibt der Dienst Informationen an den Server für die Nachverfolgung verteilter Verbindungen, der auf Domänencontrollern ausgeführt wird.

Distributed Link Tracking Server

Der Verteilte Linknachverfolgungsserver wird auf jedem Domänencontroller in einer Domäne ausgeführt. Der Dienst akzeptiert Benachrichtigungen über Datei- und Volumeverschiebungen vom Nachverfolgungsdienst auf einem Computer und ermöglicht dem Client zur Nachverfolgung von verteilten Links das Abfragen des aktuellen Speicherorts einer Linkquelle.

Dieser Serverdienst verwaltet Informationen auf den Domänencontrollern zu Volumes und Dateien, die verschoben wurden. Die Informationen zu Verschiebungen können nicht über eine bestimmte Größe hinausgehen, und sie werden automatisch entfernt, wenn sie unnötig werden.

Die Linknachverfolgungsdienste werden über die IShellLink- und IOleLink-Schnittstellen verfügbar gemacht. Daher werden sie von Shellverknüpfungen verwendet. Wenn die IShellLink::Resolve-Methode aufgerufen wird und die Referentdatei nicht gefunden werden kann, z. B. wenn der Benutzer eine Shellverknüpfung aktiviert, wird der Nachverfolgungsdienst automatisch aufgerufen, um die Datei zu finden. Wenn die IOleLink-Implementierung eine Datei nicht finden kann, z. B. in ihrer BindToSource-Methode , ruft sie automatisch den Nachverfolgungsdienst auf.

Die Verteilten Linknachverfolgungsdienste sind nur im NTFS-Dateisystem verfügbar und nur für Linkquellen unter NTFS 3.0 oder höher verfügbar. Wenn eine Linkquelle auf ein FAT-Dateisystemvolume verschoben wird, gehen die Nachverfolgungsinformationen daher verloren. Wenn eine Linkquelle zwischen NTFS 3.0 oder höher verschoben wird, aber auf dem Computer, auf dem die Verschiebung ausgeführt wird, eine frühere Version von Windows ausgeführt wird, gehen die Linknachverfolgungsinformationen verloren. Wenn die Linknachverfolgungsinformationen verloren gehen, wird der Linkquelldatei selbst kein Schaden zugefügt, sie kann einfach nicht von den verteilten Linknachverfolgungsdiensten nachverfolgt werden.

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

fsutil fsinfo ntfsinfoX:

wobei X der Laufwerkbuchstabe des Volumes ist.

Links zu Dateien auf Wechselmedien werden nicht beibehalten. Außerdem erkennt der Nachverfolgungsdienst ein neues NTFS-Dateisystemvolume erst, wenn das System erneut gestartet wird. Ein neues Volume wird möglicherweise verfügbar, weil ein FAT-Dateisystemvolume neu formatiert oder ein neues externes Laufwerk verbunden wird.