Warum verwenden spätere Windows-Versionen weiterhin Verknüpfungsdateien anstelle von symbolischen Verknüpfungen?


68

Windows XP und höher unterstützen symbolische Links. Windows verwendet weiterhin Verknüpfungsdateien (die im Wesentlichen den Speicherort der verknüpften Datei als Text speichern). Warum?


25
Warum speichern neue Versionen von Windows (und Office) Textdateien im ANSI-Format und nicht in UTF-8? Entweder um Inkompatibilität und Unangemessenheit zu begehen oder um alte Systeme zu unterstützen ...
Retrographie

9
Windows XP und höher unterstützen bestimmte Dateisysteme symbolisch. Symbolische Verknüpfungen funktionieren in einem NTFS-Dateisystem auf Ihrer Festplatte, jedoch nicht, wenn sie auf einen normalen FAT 32-formatierten USB-Stick oder eine UDF-Format-CD-ROM kopiert werden Oft kennen sie das Betriebssystem oder Dateisystem des Remote-Servers nicht. LNK-Verknüpfungsdateien können problemlos kopiert werden und funktionieren über alle diese.
GAThrawn

12
Windows- .lnkDateien ähneln eher Linux- .desktopDateien als Symlinks.
Arturo Torres Sánchez

3
Symlinks sind knifflig, was die Sicherheit angeht (verwirrtes stellvertretendes Problem)
CodesInChaos

2
Haben Sie aufgehört, Lesezeichen in Ihrem Browser zu verwenden, als NTFS auftauchte? Es mag sich wie ein absurder Vergleich anhören, aber nur, wenn Sie glauben, dass Verknüpfungen nichts anderes als Verweise auf Dateien sind - das ist einfach nicht der Fall.
Luaan

Antworten:


106

Eine Reihe von Gründen, denke ich

  1. Sie können verschiedene Kompatibilitätsstufen für mehrere verschiedene Verknüpfungen in derselben EXE-Datei speichern, die von der Shell und nicht vom Dateisystem interpretiert werden.
  2. Bestimmte Verknüpfungen sind im Dateisystem nicht vorhanden. Einige von ihnen sind lediglich Verweise auf GUIDs oder spezielle Zeichenfolgen, die von der Shell interpretiert werden.
  3. Sie können keine Schalter in einen Symlink einfügen. Sie können auf die EXE-Datei verweisen, aber Sie können dieser EXE keine weiteren Argumente mitteilen.
  4. Sie können kein Symbol für einen Symlink auswählen.
  5. Sie können nicht auswählen, aus welchem ​​Verzeichnis in einem Symlink gearbeitet werden soll.
  6. Verknüpfungsdateien müssen nicht nur auf Dateien verweisen, sondern können auch Hyperlinks oder Protokolllinks sein (im Fall einer .URL-Datei).
  7. LNK-Dateien können in jedem Dateisystem vorhanden sein. Symlinks werden vom Dateisystem selbst verwaltet, bei Windows NTFS.
  8. Es besteht keine wirkliche Notwendigkeit, sie zu ersetzen. Sie funktionieren, sind winzig und können in Zukunft vergrößert werden, falls mehr Funktionen als oben aufgeführt benötigt werden.
  9. Zum Erstellen eines Symlinks sind Administratorrechte erforderlich. (Ansonsten kann die Umleitung unschuldiger Dateien zu böswilligen Dateien mit sehr geringem Aufwand ausgeführt werden.)

Es wird mehr Gründe als diese sein, aber ich denke , das ist genug , um Sie zu erhalten begonnen :) - Es gibt einen Link von @grawity versehen hier , die einige weitere Lesung zu Teilen dieses Thema geben.


2
Darüber hinaus speichern Dateikürzel bestimmte Metadaten zum Ziel im Cache und werden auf Shell-Ebene interpretiert, sodass Verknüpfungen von der Shell aktualisiert werden können, wenn das Ziel verschoben wurde. Dies wäre bei Symlinks schwieriger. Im Allgemeinen finden Sie unter " Altes neues Ding" weitere interessante Informationen zu Verknüpfungsfunktionen.
Grawity

5
@grawity Wäre es von großem Vorteil, wenn diese vom Dateisystem verwaltet würden? Ich hätte gedacht, dass .lnk-Dateien einen unendlichen Raum haben, um bei Bedarf für weitere Funktionen erweitert zu werden, während die Abwärtskompatibilität erhalten bleibt, und sie haben nicht viel Overhead. Das in das Dateisystem zu verschieben, wäre vielleicht etwas überarbeitet? Ich bin jedoch kein Experte für das Innenleben von Dateisystemen.
Jonno

3
Es ist richtig, dass der FS selbst für die meisten dieser Informationen keine Verwendung hätte - viele .lnk-Funktionen sind wirklich explorerspezifisch, sodass das Speichern von allem als Analysepunkt anstelle einer Datei überflüssig wäre.
Grawity

3
Ich wollte nur darauf hinweisen, dass LNK-Dateien meines Wissens nicht zur Ausrichtung von URLs (Hyperlinks) verwendet werden können. Sie können dieselbe Funktion zum Erstellen von Verknüpfungen in Windows verwenden, um eine Verknüpfung zu einer URL zu erstellen. Das Endergebnis ist jedoch eine .URL-Datei (einfacher Text, im Wesentlichen eine INI-Datei), keine .LNK-Datei (binär).
Michael Becker

3
Oder start http://superuser.comwelche den Standardbrowser auswählt, wie es eine echte Verknüpfung zu einer URL tun würde. Sie können jedoch festlegen, dass .LNK-Dateien auf URLs verweisen. Letztendlich handelt es sich um "serialisierte COM-Moniker", und das COM-System kann mit neuen Monikertypen erweitert werden.
MSalters

6

Ein Symlink ist nichts anderes als ein Pfad, der in eine sehr kleine Menge von Magie des Dateisystems eingehüllt ist. Es gibt eine beliebige Anzahl von Möglichkeiten, wie es ungültig werden kann ("kaputt"), wobei die meisten eine oder mehrere Dateien oder Verzeichnisse betreffen, die umbenannt werden. Da es sich bei Windows um Consumer-Software handelt, wird möglicherweise eine große Anzahl sehr schlecht gestalteter Programme auf einer "typischen" Installation ausgeführt. Infolgedessen ist diese Art von Bruch viel schwerer zu vermeiden als auf einem Server, auf dem (theoretisch) jedes Programm, das die Festplatte berührt, eine bekannte Menge ist.

Verknüpfungen sind immun gegen die meisten Arten von Brüchen, da sie ihre Ziele unabhängig vom Pfad verfolgen. Dies macht sie benutzerfreundlicher. Sie sind speziell für Verbraucher konzipiert, mit dem Ansatz "Tu einfach was ich meine und kümmere mich nicht um die Details".

Nun, Sie könnten (bis zu einem gewissen Grad) Hardlinks verwenden, aber Hardlinks haben eine Reihe von komplizierten Eigenschaften , die sie für den Verbraucher ungeeignet machen. Insbesondere bekommen Dateien viel zu leicht neue Inode-Nummern und manche Backup-Software bricht ziemlich spektakulär zusammen, wenn sie mit harten Links konfrontiert werden. Ersteres könnte (vielleicht) mit Dateisystem-Tunneling gelöst werden (das ist in der Tat, wie Verknüpfungen ein verwandtes Problem lösen), letzteres ist jedoch ein viel schwierigeres Problem.

(Ich sollte wahrscheinlich auch beachten, dass das "Lösen" fester Verbindungen durch Tunneln ausgesprochen nicht trivial ist, da es nicht nur darum geht, Metadaten, die "verloren gegangen" sind, wieder anzuhängen. Inodes sind im Plattenzuweisungsschema verknüpft, sodass Sie nicht einfach willkürlich zusammenführen können Da Verknüpfungen andere Metadaten verwenden, die leicht getunnelt werden können, wie z. B. die Erstellungszeit, haben sie dieses Problem nicht.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.