it-swarm.com.de

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

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?

68
Alex

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, wie sie 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-Datei 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 in böswillige Dateien mit sehr geringem Aufwand ausgeführt werden.)

Es wird noch mehr Gründe geben, aber ich denke, das ist genug, um Ihnen den Einstieg zu erleichtern :) - Es gibt einen Link von @grawity hier , der einige geben wird Weitere Lektüre zu Teilen dieses Themas.

106
Jonno

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 ("defekt"), 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 Größe hat.

Verknüpfungen sind immun gegen die meisten Bruchformen , 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 könnten Sie (in gewissem Umfang) Hardlinks verwenden, aber Hardlinks haben eine Reihe komplizierter Eigenschaften , die sie für den Endverbraucher 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 (was in der Tat bedeutet, dass 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 entschieden 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, z. B. die Erstellungszeit, haben sie dieses Problem nicht.)

6
Kevin