Wie findet eine Windows-Verknüpfung eine verschobene Datei? — Der Ort einer Datei und ihre Identität sind zweierlei
· Aktualisiert am: · Go Komura · 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“.
flowchart TB
accTitle: Das Verschieben des Konzepts trennt den alten Pfad von seinem aktuellen Ort
accDescr: Der Ordner Entwürfe, den die Verknüpfung sich merkt, enthält das Konzept nicht mehr, und dasselbe Konzept ist in den Ordner Abgabe gewandert.
L["Verknüpfung"] --> O["Entwürfe - dort nicht mehr"]
F["Dasselbe Konzept"] --> N["Abgabe - 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.
flowchart TB
accTitle: Kennungen, die Verschieben und Umbenennen auf einem Volume überstehen
accDescr: Bleiben 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.
A["konzept.txt mit Namensschild K"] -->|"Verschieben und Umbenennen"| B["vorschlag.txt mit Namensschild K"]
L["Verfolgungsinformationen in der Verknüpfung"] -.->|"Suche mit K als Anhaltspunkt"| B
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.
flowchart TB
accTitle: Der Anhaltspunkt verlagert sich vom gespeicherten Ort zur Verfolgung und dann zu den Merkmalen
accDescr: Liegt das Ziel nicht am gespeicherten Ort, werden die verfügbaren Verfolgungsinformationen versucht, und findet auch das nichts, wird eine Suche über Merkmale versucht.
P["Den gespeicherten Ort prüfen"] -->|"Nicht gefunden"| I["Verfolgungsinformationen nutzen"]
I -->|"Nicht verfügbar oder nicht gefunden"| S["Nach 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
flowchart TB
accTitle: Eine Datei zu verschieben und sie zu kopieren bedeutet Verschiedenes für die Identität
accDescr: Wä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.
O["Der ursprüngliche Vorschlag"] -->|"Gewöhnliche Kopie"| C["Eine eigene Vorschlagsdatei"]
O --> A["Das ursprüngliche Namensschild"]
C --> B["Erbt 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
flowchart TB
accTitle: Die Verknüpfung laden und dann das Ziel auflösen
accDescr: Die 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.
L["Die Verknüpfung laden"] --> R["Auflösung mit Resolve versuchen"]
R -->|"Erfolg bestätigen"| G["Den 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
Referenzlinks
-
Microsoft Learn, Shell Links. Die Informationen, die eine gewöhnliche Verknüpfung speichert, und der Umriss der Verknüpfungsauflösung. ↩ ↩2
-
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
-
Microsoft Open Specifications, ShellLinkHeader. Die in einer .lnk gespeicherten Zielattribute, Zeiten und Größen. ↩
-
Microsoft Open Specifications, TrackerDataBlock. Die zusätzlichen Verfolgungsdaten, die an die Suche nach dem Ziel übergeben werden. ↩ ↩2
-
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
-
Microsoft Learn, ADMX_StartMenu Policy CSP. Das Steuern von Verfolgung und Suche mit NoResolveTrack und NoResolveSearch. ↩ ↩2
-
Microsoft Learn, IShellLinkW::GetPath. Das Holen des Zielpfads. ↩
-
Microsoft Learn, GetFileInformationByHandle. Der Vergleich über Datei-ID und Volume-Kennung sowie die Einschränkungen der Kennungen. ↩
-
Microsoft Learn, fsutil objectid. Die Verfolgungs-Objekt-ID und die bei der Entstehung festgehaltenen Kennungen. Eine Warnung davor, die Kennungen leichtfertig zu ändern. ↩
-
Microsoft Learn, Symbolic Links. Eine Dateisystemverknüpfung, die sich von einer .lnk unterscheidet. ↩
Verwandte Artikel
Aktuelle Artikel mit denselben Schlagwörtern führen zu verwandten Themen weiter.
Die Tiefen von Windows I/O (Teil 5) — NTFS-Interna: Das Dateisystem anhand des MFT verstehen
Teil 5 einer bebilderten Reihe über die NTFS-Interna. Behandelt werden MFT und Dateidatensätze, mehrere Datenströme (Zone.Identifier), Ha...
OneDrive „Dateien bei Bedarf“ und Geschäftsanwendungen — welche Annahmen Platzhalter zerbrechen
Eine CSV auf dem Desktop lässt sich nicht lesen, oder der Import scheitert mit „Datei nicht gefunden“. Ursache können KFM und Dateien bei...
Volumeschattenkopie (VSS): Funktionsweise und Praxis ── Warum sich Dateien in Benutzung sichern lassen
Dateien in Benutzung lassen sich wegen Freigabeverletzungen eigentlich nicht kopieren – wie schafft es Backup-Software trotzdem? Der Arti...
Die Tiefen von Windows I/O (Teil 4) — Cache-Manager: Wann erreicht Ihr WriteFile den Datenträger?
Teil 4 einer bebilderten Reihe über den Windows-Cache-Manager. Behandelt den als Dateizuordnung umgesetzten Cache, Read-Ahead und verzöge...
Ist „Hardware sicher entfernen“ bei USB-Sticks heute noch nötig? — Vom schnellen Entfernen und vom Schreibcache her gedacht
Dürfen Sie den USB-Stick abziehen, sobald das Kopieren fertig ist? Schreibcache, Schnelles Entfernen gegenüber Bessere Leistung, wie Sie ...
Verwandte Themen
Diese Seiten ordnen den Artikel in einen größeren Leistungs- und Entscheidungskontext ein.
Technische Windows-Themen
Portal zu Windows-Entwicklung, Fehleranalyse und der Nutzung bestehender Assets.
Leistungen zu diesem Thema
Dieser Artikel ist direkt mit den folgenden Leistungen verbunden.
Windows-App-Entwicklung
Geschäftsanwendungen, Geräteintegration und Kommunikationstools von den Anforderungen bis zur Umsetzung.
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.