Wie findet eine Windows-Verknüpfung eine verschobene Datei? — Der Ort einer Datei und ihre Identität sind zweierlei

· Aktualisiert am: · · Windows, Dateisystem, NTFS

Sie haben auf dem Desktop eine Verknüpfung angelegt, um ein Konzept im Ordner „Entwürfe“ zu öffnen. Später haben Sie das Konzept in den Ordner „Abgabe“ verschoben.

Die Verknüpfung haben Sie nicht neu erstellt. Trotzdem kann ein Doppelklick das Konzept an seinem neuen Ort öffnen.

Warum findet sie eine Datei, die nicht mehr dort liegt, wo sie einmal war?

Eine Verknüpfung merkt sich mehr als einen Ort. Sie kann auch Informationen mitführen, um erneut nach einem Ziel zu suchen, das sie nicht mehr findet. Dieser Artikel verfolgt diese Suche anhand einer gewöhnlichen .lnk, die auf eine reguläre Datei zeigt.1

1. Sehen Sie zuerst am alten Ort nach

Angenommen, Sie verschieben das Konzept auf demselben NTFS-Volume von C:\Work\Entwuerfe\konzept.txt nach C:\Work\Abgabe\konzept.txt.

Es gibt weiterhin nur eine Datei, geändert hat sich nur, wo sie liegt. Der in der Verknüpfung gespeicherte Pfad zeigt aber nach wie vor auf „Entwürfe“.

Das Verschieben des Konzepts trennt den alten Pfad von seinem aktuellen OrtDer Ordner Entwürfe, den die Verknüpfung sich merkt, enthält das Konzept nicht mehr, und dasselbe Konzept ist in den Ordner Abgabe gewandert.VerknüpfungEntwürfe - dort nicht mehrDasselbe KonzeptAbgabe - hier liegt es

Abbildung 1: Ein Mechanismus, der nur dem alten Ort folgt, liefe hier in eine Sackgasse.

Auch die Windows-Shell prüft zuerst, ob das Ziel am gespeicherten Ort liegt. Sie gibt allerdings nicht zwangsläufig auf, sobald sie es dort nicht findet. Es folgt eine Verarbeitung, die mit allen verfügbaren Informationen erneut sucht. Das nennt man Verknüpfungsauflösung.2

Das .lnk-Dateiformat enthält mehr als Angaben dazu, wo das Ziel liegt. Es hat auch Felder, die etwa Erstellungszeit und Größe festhalten, und darauf aufbauend sind zusätzliche Datenblöcke definiert, die Verfolgungsinformationen tragen. Die eine Zeile, die im Eigenschaftendialog als „Ziel“ erscheint, ist nicht alles, was eine Verknüpfung enthält.34

Worauf stützt sie sich also, wenn sich auch der Name geändert hat?

In der Abbildung kennzeichnet eine durchgezogene Linie eine stets geltende Beziehung und eine gestrichelte Linie eine bedingte (die Bedingungen stehen bei jeder Beziehung auf der Detailseite). Die vollständige Liste der Beziehungen (5 insgesamt, mit Beleg und Sicherheitsgrad) und die Definitionen der wichtigsten Konzepte sind auf der Detailseite der Wissenskarte (auf Japanisch) zusammengestellt. Daten: JSON-LD / Turtle

2. Ein Namensschild, das eine Umbenennung übersteht

Benennen Sie das nach „Abgabe“ verschobene Konzept nun in vorschlag.txt um. Ort und Name haben sich beide geändert, aber Sie haben die Originaldatei verschoben und umbenannt, statt eine andere zu erstellen.

Was in einer solchen Lage hilft, sind Kennungen, die von Ort und Name unabhängig sind.

Der Windows-Mechanismus namens verteilte Verknüpfungsnachverfolgung nutzt die Objekt-ID, die einer Datei oder einem Ordner auf NTFS zugeordnet ist. Eine Objekt-ID ist kein Pflichtattribut; sie entspricht einem Namensschild, das ein zu verfolgendes Objekt kennzeichnet. Zusätzlich gibt es einen Index, um die Objekt-IDs innerhalb dieses Volumes nachzuschlagen.5

Nehmen wir zum Beispiel an, das Konzept trägt das Namensschild K. K ist ein Symbol für diese Erklärung, nicht das tatsächliche Format einer ID.

Kennungen, die Verschieben und Umbenennen auf einem Volume überstehenBleiben die Verfolgungsinformationen erhalten, ist dasselbe Namensschild der Anhaltspunkt, um dem Konzept in Entwürfe zum Vorschlag in Abgabe zu folgen, obwohl Name und Ort sich geändert haben.Verschieben und UmbenennenSuche mit K als Anhaltspunktkonzept.txt mit Namensschild Kvorschlag.txt mit Namensschild KVerfolgungsinformationen in der Verknüpfung

Abbildung 2: Wo eine Datei liegt, kann sich ändern, ohne dass sich die zur Verfolgung genutzten Kennungen mitändern.

Stehen Verfolgungsinformationen zur Verfügung, beschränkt sich die Suche nicht darauf, den alten Namen in allen Ordnern zu jagen; das Ziel nach dem Verschieben lässt sich aus den Kennungen finden. Der TrackerDataBlock in einer .lnk kann die an diesen Verfolgungsdienst übergebenen Informationen speichern.4

Ein Adresswechsel macht Sie nicht zu einer anderen Person. Ebenso kann sich der Pfad einer Datei ändern, während die Anhaltspunkte, um derselben Datei zu folgen, bestehen bleiben. Das ist ein Grund, warum sich eine Verknüpfung nach einem Verschieben weiterhin öffnen lässt.

Nicht jede Verknüpfung wird jedoch so aufgelöst. Lässt sich das Namensschild nicht nutzen, geht die Suche zu einer anderen Methode über.

3. Findet die Kennung nichts, wird über Merkmale gesucht

Was, wenn ein benachbarter Ordner eine Datei mit derselben Erstellungszeit wie das ursprüngliche Konzept und ähnlichen Attributen enthielte? Damit wäre sie ein Kandidat, der die Originaldatei unter neuem Namen sein könnte.

Die Shell verfügt auch über eine Suche, die solche Merkmale nutzt. Die offizielle Beschreibung sagt, dass die Shell, wenn der Verfolgungsdienst nicht verfügbar ist oder die Verfolgung das Ziel nicht findet, an Orten wie dem ursprünglichen Ordner und dessen Umgebung nach Kandidaten sucht, deren Name, Erstellungszeit und Ähnliches übereinstimmen.2

Der bisherige Weg lässt sich so zusammenfassen.

Der Anhaltspunkt verlagert sich vom gespeicherten Ort zur Verfolgung und dann zu den MerkmalenLiegt das Ziel nicht am gespeicherten Ort, werden die verfügbaren Verfolgungsinformationen versucht, und findet auch das nichts, wird eine Suche über Merkmale versucht.Nicht gefundenNicht verfügbar oder nicht gefundenDen gespeicherten Ort prüfenVerfolgungsinformationen nutzenNach Kandidaten mit passenden Merkmalen suchen

Abbildung 3: Der grobe Umriss der gewöhnlichen Verknüpfungsauflösung. Ob Verfolgung und Suche überhaupt stattfinden, hängt außerdem von den Einstellungen und der Art des Aufrufs ab.

Ein passendes Namensschild und ähnliche Merkmale sind nicht gleich starke Belege. Teilen sich mehrere Dateien einen Namen oder eine Erstellungszeit, können Merkmale allein nicht beweisen, welche das eigentliche Ziel ist. Das ist kein Mechanismus, der den gesamten Inhalt vergleicht, um Identität zu beweisen; es ist ein Mechanismus, der erneut nach einem verlorenen Ziel sucht.

Auch setzt sich die Suche nicht unbegrenzt fort. Eine Anwendung kann Flags angeben, die Verfolgung oder Suche unterdrücken, und eine administrative Richtlinie kann sie einschränken. Dass die Datei sich geöffnet hat, sagt für sich genommen nicht, welcher Anhaltspunkt die Arbeit geleistet hat.6

4. Ist eine inhaltsgleiche Kopie dieselbe Datei?

Kopieren Sie nun vorschlag.txt aus „Abgabe“ nach „Verteilung“. Der Inhalt ist derselbe, aber es gibt jetzt zwei Dateien. Bearbeiten Sie nur eine davon, behält die andere ihren Inhalt.

Auch die Objekt-ID wird durch eine gewöhnliche Kopie nicht einfach dupliziert. Hätten zwei Dateien auf demselben Volume dieselbe ID, könnte das Namensschild sie nicht mehr auseinanderhalten. Microsoft erläutert, dass eine Kopie nicht dieselbe Objekt-ID wie das Original erbt.5

Eine Datei zu verschieben und sie zu kopieren bedeutet Verschiedenes für die IdentitätWährend das Verschieben dieselbe Datei erhält, erzeugt eine gewöhnliche Kopie eine eigene Datei mit demselben Inhalt, und die ursprüngliche Verfolgungs-Objekt-ID wird nicht unverändert dupliziert.Gewöhnliche KopieDer ursprüngliche VorschlagEine eigene VorschlagsdateiDas ursprüngliche NamensschildErbt nicht dasselbe Namensschild

Abbildung 4: Den Inhalt gleich zu machen ist nicht dasselbe, wie die Originaldatei selbst zu verschieben.

Hier noch ein Fall, der Menschen überrascht. Nachdem das ursprüngliche Konzept nach „Abgabe“ verschoben wurde: Was geschieht, wenn eine andere Datei gleichen Namens an den nun freien Platz Entwuerfe\konzept.txt gelegt wird?

Wie in Abschnitt 1 beschrieben, wird normalerweise zuerst der gespeicherte Ort geprüft. Wird dort ein Ziel gefunden, kommt der Vorgang womöglich nie bis zur Suche nach dem neuen Ort. Anders gesagt: Selbst mit vorhandener Verfolgung gibt es keine Garantie, dass die von Ihnen verschobene Originaldatei gewählt wird.1

Eine Verknüpfung ist ein bequemer Einstieg, um ein Ziel zu finden, das sie jetzt öffnen kann. Sie ist kein Mechanismus, der jedes Mal beweist, dass dies dieselbe Datei wie zuvor ist. Halten Sie diese Unterscheidung fest, fügen sich Bequemlichkeit und Grenzen zusammen.

5. Verfolgen Sie dieselbe Datei auf Ihrem eigenen PC

Wenn Sie das ausprobieren, nehmen Sie eine Textdatei in einem lokalen Testordner statt eines Arbeitsdokuments. Legen Sie zunächst „Entwürfe“ und „Abgabe“ auf demselben NTFS-Volume an und halten Sie die Bedingungen eng, indem Sie synchronisierte Ordner und Netzwerkfreigaben meiden.

Erstellen Sie eine Datei in „Entwürfe“, legen Sie eine Verknüpfung darauf an und bestätigen Sie, dass sie sich von dort öffnet. Verschieben Sie danach nur die Datei selbst nach „Abgabe“ und öffnen Sie die Verknüpfung. Benennen Sie die Datei anschließend um und versuchen Sie es erneut. Prüfen Sie jedes Mal, welche Datei sich tatsächlich geöffnet hat.

Worauf Sie achten, ist, ob die Verknüpfung den neuen Ort erreicht, sobald der alte nicht mehr nutzbar ist. Öffnet sie sich nicht, widerspricht das diesem Artikel nicht. Das Ergebnis ändert sich mit den Bedingungen, unter denen die NTFS-Verfolgung verfügbar ist, den verbliebenen Informationen, den Einstellungen und so weiter. Erwarten Sie nicht dasselbe Ergebnis, sobald eine Datei auf einen USB-Stick oder einen anderen PC wandert.56

Beim Schreiben habe ich das Verhalten außerdem mit IShellLinkW::Resolve auf lokalem NTFS unter Windows Server 2025 (Build 26100) bestätigt. Nach Verschieben und Umbenennen kam der neue Pfad zurück, und in einem separaten Versuch, bei dem eine andere Datei am ursprünglichen Ort lag, kam der alte Pfad zurück. Das ist eine Beobachtung der API in einer Umgebung, kein Test über die Explorer-Oberfläche unter Windows 11 und keine Überprüfung, welcher interne Suchpfad genutzt wurde. Das Beobachtungsprotokoll steht ebenfalls zur Verfügung.

Für den Vergleich, bei dem eine andere Datei am ursprünglichen Ort liegt, beginnen Sie mit einer anderen Testdatei ganz von vorn. Bei einer einmal aufgelösten Verknüpfung können die Verknüpfungsinformationen aktualisiert worden sein, sodass dieselbe Verknüpfung womöglich nicht mehr auf den alten Ort zeigt.2

6. Für Entwickler: Einen Pfad lesen gegenüber erneut suchen

Wenn eine Anwendung mit einer .lnk arbeitet, halten Sie das Lesen der gespeicherten Informationen getrennt vom Suchen nach einem verlorenen Ziel. Den Pfad mit GetPath auf IShellLink zu holen und die Verknüpfungsauflösung mit Resolve zu versuchen sind nicht dieselbe Operation.7

Die Verknüpfung laden und dann das Ziel auflösenDie Verknüpfung mit IPersistFile laden, die Auflösung mit Resolve versuchen und den aufgelösten Pfad mit GetPath holen, nachdem der Erfolg bestätigt wurde.Erfolg bestätigenDie Verknüpfung ladenAuflösung mit Resolve versuchenDen Pfad mit GetPath holen

Abbildung 5: Die Zeichenfolge für den ursprünglichen Ort zu lesen heißt nicht, nach dem neuen gesucht zu haben.

In automatisierten Abläufen sind auch die Oberfläche bei erfolgloser Suche, die aufgewendete Suchzeit, die Nutzung der Verfolgung und die Aktualisierung der Verknüpfungsinformationen Entwurfsentscheidungen. SLR_NOSEARCH unterdrückt beispielsweise die Suche über Merkmale und SLR_NOTRACK die Nutzung der verteilten Verknüpfungsnachverfolgung. Wählen Sie die Flags passend zu Ihrem Zweck und werten Sie nicht als Erfolg, dass sich irgendetwas geöffnet hat.2

Beachten Sie, dass die Verfolgungs-Objekt-ID und die aus einem Dateihandle gewonnene Datei-ID nicht dasselbe sind. Der Vergleich von Datei-IDs bezieht auch das Volume ein. Werfen Sie sie nicht zusammen, nur weil beides „ID“ heißt; prüfen Sie, mit welcher Kennung aus welcher API Sie es zu tun haben. Eine Objekt-ID von Hand umzuschreiben ist nicht nötig.89

Außerdem ist die hier besprochene .lnk eine Shell-Datei. Sie unterscheidet sich von einem symbolischen Link, der innerhalb der Pfadauflösung des Dateisystems arbeitet, sodass sich diese Darstellung der Suche nicht einfach darauf übertragen lässt.10


Eine Verknüpfung merkt sich mehr als die alte Adresse. Findet der Ort die Datei nicht, nutzt sie Verfolgungsinformationen, und ist das nicht möglich, sucht sie über Merkmale. Deshalb kann sie einem Verschieben oder Umbenennen manchmal folgen. Und sobald inhaltsgleiche Kopien oder eine andere Datei am ursprünglichen Ort ins Spiel kommen, kann sie nicht immer das ursprüngliche Ziel treffen.

Verwandte Artikel

  1. Microsoft Learn, IShellLinkW::Resolve. Verfolgung und Suche über Merkmale, die verschiedenen Flags und die Bedingungen für das Aktualisieren der Verknüpfungsinformationen.  2 3 4

  2. Microsoft Open Specifications, ShellLinkHeader. Die in einer .lnk gespeicherten Zielattribute, Zeiten und Größen. 

  3. Microsoft Open Specifications, TrackerDataBlock. Die zusätzlichen Verfolgungsdaten, die an die Suche nach dem Ziel übergeben werden.  2

  4. Microsoft Learn, Distributed Link Tracking and Object Identifiers. Objekt-IDs, der Unterschied bei einer Kopie sowie die NTFS-Verfolgung und ihre Einschränkungen.  2 3

  5. Microsoft Learn, ADMX_StartMenu Policy CSP. Das Steuern von Verfolgung und Suche mit NoResolveTrack und NoResolveSearch.  2

  6. Microsoft Learn, IShellLinkW::GetPath. Das Holen des Zielpfads. 

  7. Microsoft Learn, GetFileInformationByHandle. Der Vergleich über Datei-ID und Volume-Kennung sowie die Einschränkungen der Kennungen. 

  8. Microsoft Learn, fsutil objectid. Die Verfolgungs-Objekt-ID und die bei der Entstehung festgehaltenen Kennungen. Eine Warnung davor, die Kennungen leichtfertig zu ändern. 

Aktuelle Artikel mit denselben Schlagwörtern führen zu verwandten Themen weiter.

Diese Seiten ordnen den Artikel in einen größeren Leistungs- und Entscheidungskontext ein.

Dieser Artikel ist direkt mit den folgenden Leistungen verbunden.

Häufige Fragen

Fragen, die in Beratungen zu diesem Artikelthema häufig gestellt werden.

Warum lässt sich eine Verknüpfung noch öffnen, nachdem die Originaldatei verschoben wurde?
Weil eine gewöhnliche .lnk-Verknüpfung erneut suchen kann — mit verfügbaren Verfolgungsinformationen und den Merkmalen der Datei —, wenn der gespeicherte Pfad das Ziel nicht findet. Sie ist nicht bloß eine Pfadzeichenfolge. Je nach Dateisystem, Einstellungen und Suchbedingungen kann das Ziel dennoch unauffindbar bleiben.
Vergleicht eine Verknüpfung den Dateiinhalt, um die Originaldatei zu finden?
Die hier beschriebene Verknüpfungsauflösung nutzt den Pfad, die NTFS-Verfolgungskennung sowie Angaben wie Name und Erstellungszeit. Sie ist kein Mechanismus, der über einen Inhaltsvergleich beweist, dass eine Datei das Original ist. Auch wenn Sie identischen Inhalt kopieren, ist diese Kopie eine andere Datei.
Wenn am ursprünglichen Ort eine andere Datei gleichen Namens liegt, wird dann das verschobene Original geöffnet?
Nicht zwangsläufig. Die gewöhnliche Verknüpfungsauflösung prüft zuerst den gespeicherten Pfad, sodass die andere Datei am ursprünglichen Ort als Ziel behandelt werden kann. Verlassen Sie sich nicht auf die automatische Verfolgung als Garantie dafür, dass immer eine bestimmte Datei gewählt wird.
Funktioniert die Verfolgung garantiert, wenn ich eine Datei auf einen USB-Stick oder einen anderen PC verschiebe?
Nein, garantiert ist das nicht. NTFS-Verfolgung und die Suche über Merkmale sind getrennte Mechanismen, und das Zieldateisystem, die verbliebenen Verfolgungsinformationen, Dienste und Richtlinien sowie der Verbindungszustand spielen alle mit hinein. Jemandem nur die Verknüpfung zu geben übergibt nicht die Zieldatei selbst.
Sind eine Verknüpfung und ein symbolischer Link dasselbe?
Nein, sie sind verschieden. Eine .lnk ist eine Datei, die die Windows-Shell liest, um das Ziel aufzulösen. Ein symbolischer Link ist ein eigener Mechanismus, der an der Pfadauflösung des Dateisystems teilnimmt, und das Suchverhalten einer .lnk lässt sich nicht auf ihn übertragen.

Autorenprofil

Profilseite des Artikelautors.

Go Komura

Geschäftsführer von KomuraSoft LLC

Spezialisiert auf Windows-Softwareentwicklung, technische Beratung und Fehleranalyse, insbesondere bei bestehenden Systemen und schwer reproduzierbaren Störungen.

Zurück zum Blog