Distributed Link Tracking and Object Identifiers
Das Speichern eines Verweises auf eine Datei oder ein Verzeichnis unter Verwendung ihres Pfads und Dateinamens ist nicht zuverlässig. Wenn ein Benutzer eine Datei umbenennt, werden die Links zur Datei unterbrochen. Wenn ein Benutzer das Verzeichnis umbenennt, werden die Links zur Datei sowie alle Dateien und Unterverzeichnisse in der Verzeichnisstruktur unterbrochen.
Mit dem Dienst für die Nachverfolgung verteilter Links können Clientanwendungen verschobene Linkquellen nachverfolgen. Clients, die den Linkverfolgungsdienst abonnieren, können die Integrität ihrer Verweise beibehalten, und die Objekte können auf eine Weise nachverfolgt werden, die für den Benutzer transparent ist.
Objektbezeichner
Der Linkverfolgungsdienst verwaltet seinen Link zu einem Objekt mithilfe eines Objektbezeichners (ID). 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 werden Objekt-IDs beibehalten. 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 Linkverfolgungsdienst ein. Wenn Sie dagegen eine Objekt-ID löschen, beendet der Linkverfolgungsdienst die Verwaltung von Links zur Datei. Eine Liste der Dateisystem-Steuerungscodes, die Vorgänge für Objekt-IDs ausführen, finden Sie unter Dateiverwaltungs-Steuerungscodes.
Der Dienst für die Nachverfolgung verteilter Links verfolgt Linkquellen für Shellverknüpfungen und OLE-Links auf NTFS-Dateisystemvolumes nach. Der Linkclient kann einen fehlerhaften Link mit aktualisierten Informationen zum neuen Speicherort der Linkquelle beheben.
Features für die Linknachverfolgung
Shellverknüpfungen umfassen die heuristische Linknachverfolgung, die einen Struktursuchalgorithmus verwendet, um eine Übereinstimmung für eine verschobene Linkquelle zu finden. Der Suchalgorithmus basiert auf dem letzten bekannten Pfad der Datei- und Dateiinformationen, einschließlich Erstellungsdatum, Dateigröße, Dateiname und Erweiterung.
OLE-Verknüpfung umfasst die gleiche heuristische Linknachverfolgung. Windows enthält auch die gleiche heuristische Linknachverfolgung mit einigen zusätzlichen Verbesserungen bei der Suche nach Namensräumen, um ergebnisse in einigen gängigen Szenarien zu erzielen. Die Verbesserungen umfassen das folgende Verfahren, das von den von einer Clientanwendung vorgegebenen Zeitlimits abhängt.
So suchen Sie nach Namensbereichen
- Suchen Sie vier Verzeichnisebenen nach unten im letzten Verzeichnis.
- Verschieben Sie ein Verzeichnis nach oben, und wiederholen Sie die Schritte 1 und 2 dreimal. Dies kann zu Ergebnissen führen, wenn das Objekt in der Nähe verschoben wurde.
- Suchen Sie vier Ebenen nach unten im Desktopstamm. Dies kann Ergebnisse liefern, wenn das Objekt an einen Speicherort auf demselben Desktop verschoben wurde.
- Suchen Sie im Stamm auf jedem lokalen Festplattenlaufwerk vier Ebenen nach unten.
- Wiederholen Sie die Schritte 1 bis 3 ohne vier Verzeichnislimits.
Hinweis
Diese Verknüpfungsnachverfolgungsschemas sind für den Endbenutzer transparent. Sie führen jedoch nicht immer zu positiven Ergebnissen 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 erstellt wird und die Datei auf ein anderes Volume mit NTFS 3.0 oder höher innerhalb derselben Domäne verschoben wird, kann die Datei vom Nachverfolgungsdienst gefunden werden, je nach Zeitaspekten. Darüber hinaus wird die Datei gefunden, wenn sie außerhalb der Domäne oder innerhalb einer Arbeitsgruppe verschoben wird.
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 Laufwerkbuchstabe des Volumes ist.
Wenn ein Link zu einer Datei erstellt wird, wird die Zieldatei als Linkquelle betrachtet, 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 Dienst für die Nachverfolgung verteilter Links 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 innerhalb derselben Domäne verschoben.
Der Dienst für die Nachverfolgung verteilter Links versucht auch in den vorherigen Situationen, Links zu verwalten, auch wenn sie nicht innerhalb einer Domäne auftreten, d. h., sie sind domänenübergreifend oder innerhalb einer Arbeitsgruppe. Verknüpfungen 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 in der Regel beibehalten werden, wenn die Linkquelle auf einen anderen Computer verschoben wird, aber diese Art der Nachverfolgung ist im Laufe der Zeit weniger zuverlässig.
Linknachverfolgungsfunktion
Die Funktion für die Linknachverfolgung wird hauptsächlich in Form der folgenden beiden Systemdienste implementiert:
- Überwachung verteilter Verknüpfungen (Client)
- Distributed Link Tracking Server
-
Distributed Link Tracking Client
-
Der Client für die verteilte Linknachverfolgung wird auf allen Computern ausgeführt und verwaltet die Linknachverfolgungsaktivitäten für diesen Computer. Zu diesen Aktivitäten gehören das Suchen nach Linkquellen und das Verarbeiten von Verschiebungen der Linkquelle. Wenn eine Linkquelle verschoben wird, übergibt der Dienst Informationen an den Server für die Verteilte Linknachverfolgung, der auf Domänencontrollern ausgeführt wird.
-
Distributed Link Tracking Server
-
Der Server für die Nachverfolgung verteilter Links wird auf jedem Domänencontroller in einer Domäne ausgeführt. Der Dienst akzeptiert Benachrichtigungen über Datei- und Volumebewegungen vom Überwachungsdienst auf einem Computer und ermöglicht dem Client für die verteilte Linknachverfolgung, den aktuellen Speicherort einer Linkquelle abzufragen.
Dieser Serverdienst verwaltet Informationen zu verschobenen Volumes und Dateien auf den Domänencontrollern. Die Informationen zu Verschiebungen können eine bestimmte Größe nicht überschreitet, und sie werden automatisch entfernt, wenn sie nicht mehr benötigt werden.
Die Linkverfolgungsdienste werden von den Schnittstellen IShellLink und IOleLink verfügbar gemacht. Daher werden sie von Shellverknüpfungen verwendet. Wenn die IShellLink::Resolve-Methode aufgerufen wird und die Referenzdatei 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 beispielsweise in ihrer BindToSource-Methode keine Datei finden kann, ruft sie automatisch für den Überwachungsdienst auf.
Einschränkungen der Linknachverfolgung
Die Distributed Link Tracking-Dienste sind nur im NTFS-Dateisystem und nur für Linkquellen unter NTFS 3.0 oder höher verfügbar. Wenn also eine Linkquelle auf ein FAT-Dateisystemvolume verschoben wird, geht die Nachverfolgungsinformation 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 Informationen zur Linknachverfolgung verloren. Wenn die Informationen zur Linknachverfolgung verloren gegangen sind, wird der Linkquelldatei selbst kein Schaden zugefügt. Sie können von den Distributed Link Tracking Services einfach nicht 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 ntfsinfo X:
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 neu gestartet wird. Ein neues Volume kann verfügbar werden, weil ein FAT-Dateisystemvolume neu partitioniert, an das NTFS-Dateisystem neu formatiert oder ein neues externes Laufwerk verbunden wird.