Verknüpfung (Computer)
Als Verknüpfung (englisch link oder shortcut) bezeichnet man in der Computertechnik einen Verweis auf ein Objekt an einer anderen Stelle, ähnlich einem Querverweis. Bei den Objekten kann es sich zum Beispiel um Dateien oder Verzeichnisse handeln, die in der Regel an einem anderen Speicherort abgelegt sind oder auch unter einer anderen Bezeichnung geführt werden. Im World Wide Web können Verknüpfungen auf andere Webseiten oder Abschnitte innerhalb einer Webseite verweisen. Eine Verknüpfung kann auch eine Beziehung zwischen zwei oder mehr Objekten herstellen; solche Assoziationen oder Beziehungen werden oft als UML-Diagramm oder Entity-Relationship-Diagramm dargestellt.
Verknüpfungen im Verzeichnis- und Dateisystem
Verknüpfungen können allgemein in die folgenden fünf Kategorien unterschieden werden:
- Datei- oder Desktop-Verknüpfungen
- Desktop-Verknüpfungen sind Dateien, meistens Textdateien, die von einer grafischen Benutzeroberfläche interpretiert werden und auf eine Datei oder ein Verzeichnis verweisen. Sie werden für die Desktop-Symbole oder die Einträge des Start-Menüs verwendet.
- Durch das Anklicken, Öffnen, Ausführen oder ähnliches wird für das hinter der Verknüpfung liegende Objekt, die dem Dateityp zugeordnete Operation ausgeführt. So wird bei einer Verknüpfung auf eine ausführbare Datei dieses gestartet oder bei einem Verweis auf einen Ordner, dieser im Dateimanager geöffnet.
- Zusätzlich können Dateiverknüpfungen noch weitere Informationen enthalten, zum Beispiel ein Icon, das zur grafischen Darstellung der Verknüpfung verwendet wird oder einen Beschreibungstext. Unter Windows haben solche Dateien die Endung .lnk und unter FreeDesktop-kompatiblen Oberflächen, wie KDE oder Gnome, die Endung .desktop.
- Im Gegensatz zu symbolischen und harten Links sind Dateiverknüpfungen kein Bestandteil des Dateisystems, sondern setzen darauf auf und sind anwendungsspezifisch.
- Symbolische Verknüpfungen
- Symbolische Links sind spezielle Dateien, die nur aus einem kurzen Text, einer Pfadangabe zu einer anderen Datei oder einem Verzeichnis, bestehen, aber im Dateisystem gesondert gekennzeichnet sind. Das Verweisziel muss dabei nicht zwangsläufig existieren: es kann zwischenzeitlich entfernt, verschoben oder gelöscht worden sein.
- Harte Links
- Harte Links sind bei aktuellen Dateisystemen der oder die Dateinamen (genauer: Dateieinträge in den Verzeichnissen) einer Datei. Der Inhalt der Datei ist gesondert gespeichert; auf jede Datei verweist mindestens ein Dateieintrag, es kann aber auch mehrere Dateieinträge geben, die die Datei referenzieren (surjektive Abbildung).
Eigenschaft/Aktion | Symbolische Verknüpfung | Harter Link | Abzweigungspunkt | ||
---|---|---|---|---|---|
Löschen der symbolischen Verknüpfung/des harten Links/des Abzweigungspunktes… | Ziel merkt nichts | Referenzzähler wird um 1 reduziert; wenn 0, ist das Ziel logisch gelöscht | Ziel wird gelöscht (außer bei Verwendung geeigneter Tools; Windows: Bei mit "MKLINK /J" erstellten A. merkt Ziel nichts.) | ||
Verschieben des Ziels | Symbolische Verknüpfung wird ungültig | Harter Link bleibt gültig | Abzweigepunkt wird ungültig | ||
Relative Zielangabe | möglich | (entfällt) | unmöglich (wird beim Speichern expandiert) | ||
Dateisystemübergreifend: Laufwerksbuchstaben-, Partitions-, Volumenübergreifend | möglich | unmöglich (da Verweis auf denselben Dateideskriptor) | möglich | ||
Auslesen des Ziels | möglich | möglich | |||
Windows | für Dateien | ab Vista / Windows 2008; (anlegen nur mit Administratorrechten) | ja | nein | |
für Verzeichnisse | nein | ja | |||
Unix | für Dateien | ja | ja | (entfällt) | |
für Verzeichnisse | ja | ja (anlegen als root, jedoch nicht bei allen Dateisystemen) | (entfällt) |
Windows
Unter Windows gibt es fünf Arten von Verknüpfungen.
Dateiverknüpfung
Bei der Dateiverknüpfung von Windows handelt es sich um eine gewöhnliche, sehr kleine Datei, welche die versteckte Dateiendung *.lnk
verwendet. Im engeren Sinne werden solche Dateiverknüpfungen nicht als Link, sondern Shortcut unter Microsoft Windows bezeichnet. Diese kleinen Windows-Shortcuts verweisen auf eine andere Datei oder auf ein Verzeichnis. Außerdem kann ein Shortcut Angaben enthalten, wie das Ziel zu öffnen ist. Eine Dateiverknüpfung kann einen vom Ziel abweichenden Namen besitzen und wird gewöhnlich mit einem Pfeil links unten im Symbol (Icon) versehen.
Ein Windows-Shortcut ist sichtbar, das heißt, der Benutzer sieht die Verknüpfung im Windows-Explorer oder anderen Dateimanagern als Verknüpfung. Die meisten Anwendungen verfolgen solchen Shortcuts aber nicht; wenn die Anwendung versucht, die Dateiverknüpfung zu öffnen, wird in der Regel nicht automatisch das Ziel geöffnet, sondern die Anwendung versucht erfolglos, die Verknüpfung selbst zu öffnen. In Windows-Shortcuts sind keine relativen (.\Unterordner\Datei.txt), sondern nur absolute Pfadangaben möglich.
Ordnerverknüpfung
Bei der Ordnerverknüpfung[1] (englisch auch virtual folder,[2] zu dt. virtueller Ordner oder virtuelles Verzeichnis) von Windows handelt es sich um ein Verzeichnis mit den Eigenschaften „schreibgeschützt“ und/oder system,[3] das eine auf das Ziel verweisende Dateiverknüpfung mit dem festen Namen target.lnk sowie eine (versteckte) Datei desktop.ini mit (mindestens) folgendem Inhalt enthält:
[.ShellClassInfo]
CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
Eine Ordnerverknüpfung ist (im Windows-Explorer) transparent.
Ordnerverknüpfungen werden von Windows selbst erzeugt und verwendet, beispielsweise in der Netzwerkumgebung.
Shell Objects in Windows
Shell objects[4] oder shell folder sind in der Windows Registry definierte Objekte, die u. a. auch die Funktion einer Verknüpfung realisieren können. Die (mindestens) notwendigen Registry-Einträge für ein solches shell object sind wie folgt (die CLSID\{00000000-0000-0000-0000-000000000000}
wird hier als Platzhalter verwendet):
[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}]
@="angezeigter Name"
[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\DefaultIcon]
@="..." ; Pfad zum anzuzeigenden Symbol
[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\InProcServer32]
@="%SystemRoot%\\System32\\ShDocVw.Dll"
"ThreadingModel"="Apartment"
[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\Instance]
"CLSID"="{0AFACED1-E828-11D1-9187-B532F1E9575D}"
[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\Instance\InitPropertyBag]
"Attributes"=hex:15,00,00,00
"Target"="..." ; absoluter (nur ohne "TargetKnownFolder" oder "TargetSpecialFolder")
; oder relativer Pfad zum Zielobjekt
"TargetKnownFolder"="{guidguid-guid-guid-guid-guidguidguid}" ; GUID des Zielordners, ab ''Windows Vista''
"TargetSpecialFolder"="0x00xy" ; CSIDL des Zielobjekts
[HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\ShellFolder]
"Attributes"=hex:00,00,00,00
Windows verwendet solche verknüpfenden shell objects selbst, beispielsweise für die virtuellen Ordner Eigene Dateien auf dem Desktop sowie Schriftarten und Verwaltung in der Systemsteuerung.
Ein shell object ist (im Windows-Explorer) transparent.
Symbolische Verknüpfung
Seit Windows Vista und Windows Server 2008 (beide intern Windows NT 6.0) stehen über das Win32-API echte symbolische Verknüpfungen zur Verfügung, die transparent im Dateisystem vorliegen und auf Dateien und Verzeichnisse des eigenen Computers verweisen können. Symbolische Verknüpfungen können eine relative Zielangabe enthalten.
Zum Anlegen dieser symbolischen Verknüpfung wird das Recht Create Symbolic Link benötigt. Dieses steht standardmäßig nur Benutzern mit Administratorrechten zur Verfügung. Weiterhin muss beim Anlegen der Verknüpfung bekannt sein, ob das Ziel eine Datei oder ein Verzeichnis ist. Aus diesen Gründen sind die symbolischen Verknüpfungen von Windows nicht vollständig kompatibel zu POSIX.
Abzweigungspunkte
Unabhängig davon gibt es seit der NTFS-Ausgabe 3.0, dem von Windows 2000 standardmäßig verwendeten Dateisystem, sogenannte „Abzweigungspunkte“ (englisch auch ‚[file system] reparse points‘ oder ‚junction points‘ und kurz ‚junctions‘ genannt). Allerdings wurden die zugehörigen Verwaltungswerkzeuge erst später, nach und nach ab Windows XP mitgeliefert und derartige Verweise wohl erst ab Vista (sicher aber ab Windows 7) auch im Explorer (mit dem üblichen Verknüpfungspfeil, ähnlich wie bei Dateiverknüpfungen) angezeigt.
Abzweigungspunkte sind den symbolischen Verknüpfungen auf Verzeichnisse sehr viel ähnlicher als „Dateiverknüpfungen“ oder „Ordnerverknüpfungen“. Diese Abzweigungspunkte entsprechen unter Linux (und anderen Unixähnlichen) weitgehend dem Einhängen von Verzeichnissen an einer weiteren Stelle mittels mount --rbind
.
Abzweigungspunkte können ab Windows Vista über eine Befehlszeile mit dem Befehl mklink /J
angelegt werden und bei älteren Windows-Ausgaben mit den bei Microsoft erhältlichen Zusatzanwendungen junction.exe[5] und linkd.exe[6] – erstgenannte Anwendung aus den Sysinternals und letztere aus den Windows 2003 Resource Kit Tools.
Mit den folgenden Befehlen kann ein Abzweigungspunkt "C:\Neue Verbindung"
angelegt werden, der auf den Ordner "C:\Verzeichnis"
verweist. Der Inhalt von "C:\Verzeichnis"
(das Ziel des Abzweigungspunktes, englisch junction target) kann im Explorer nun auch über "C:\Neue Verbindung"
(englisch junction directory) aufgerufen oder – die Verbindung kann wie ein gewöhnlicher Ordner – geöffnet werden. Abzweigungspunkte bleiben ebenfalls nach einem Windows-Neustart erhalten.
C:\>mklink /J "C:\Neue Verbindung" "C:\Verzeichnis"
oder
C:\>junction "C:\Neue Verbindung" "C:\Verzeichnis"
oder
C:\>linkd "C:\Neue Verbindung" "C:\Verzeichnis"
Mit der oben schon genannten Anwendung und dessen nachrüstbaren Befehl junction[.exe]
kann zudem auch ab Windows XP unter anderem das Ziel einer bestehenden Verbindung und (mit dem Schalter -s
, für ‚Recurse subdirectories‘) auch weitere Verbindungen – rekursiv durch Unterordner – angezeigt werden.[5]
Ein Abzweigungspunkt kann über folgende Befehle aufgehoben werden:
C:\>rmdir "C:\Neue Verbindung"
oder
C:\>junction -d "C:\Neue Verbindung"
oder
C:\>linkd "C:\Neue Verbindung" /D
Wobei der Übergabewert „d“ für das englische ‚delete‘ oder ‚deleting‘ – also „löschen“ – und "C:\Neue Verbindung"
für das Ziel des angelegten Abzweigungspunktes steht.
Im Unterschied zu echten symbolischen Verknüpfungen werden in Abzweigungspunkten stets absolute Pfade gespeichert. Folgendes Beispiel zeigt wie mit den Befehlen mklink
eine neue Verbindung angelegt und Diese anschließend mit dir
angezeigt werden kann:
C:\>mklink /j "Neue Verbindung" Zielordner
Verbindung erstellt für Neue Verbindung <<===>> Zielordner
C:\>dir /al
Datenträger in Laufwerk C: ist abc
Verzeichnis von C:\
07.12.2010 10:30 <VERBINDUNG> Neue Verbindung [C:\Zielordner]
Auf der Befehlszeile können Abzweigungspunkte auch mit dem Befehl dir angezeigt werden, wobei anstelle eines <DIR> (für normale Verzeichnisse) dann <VERBINDUNG> (oder englisch <JUNCTION>) ausgegeben wird. Dabei wird dann auch – ab Vista – das Verweisziel angezeigt, das bei älteren Windows-Ausgaben gesondert über die genannten Zusatzanwendungen (oder auch über den Befehl fsutil
, siehe auch Analysepunkt) abgefragt werden kann.
Ordnerüberblendung
Ab Windows Vista werden Schreibvorgänge von Programmen, die keine Schreibberechtigung für das entsprechende Verzeichnis haben, unter bestimmten Voraussetzungen ohne Fehlermeldung durchgeführt; der eigentliche Schreibvorgang wird in ein Schattenverzeichnis im Benutzerprofil umgeleitet. Dieses Schattenverzeichnis wird für diesen Benutzer dem eigentlichen Verzeichnis überblendet, so dass es für ihn aussieht, als sei der Schreibvorgang erfolgreich durchgeführt worden.
So können Programme, die das Konzept der eingeschränkten Benutzerrechte nicht korrekt unterstützen, trotzdem ohne Fehlermeldung ablaufen.
Cygwin und Verknüpfungen
Die Cygwin-Umgebung unterstützt POSIX-kompatible harte Links und symbolische Verknüpfungen. Harte Links werden dabei transparent auf harte Links von Windows abgebildet. Vorhandene Abzweigungspunkte werden als symbolische Verknüpfung angezeigt. Von Cygwin aus angelegte symbolische Verknüpfungen werden allerdings emuliert, da die Windows-eigenen symbolischen Verknüpfungen nicht vollständig POSIX-kompatibel sind. Solche Verknüpfungen sind daher nur für Cygwin-Programme sichtbar, sonstige Programme sehen nur eine Datei mit Systemattribut. Dies gilt auch unter Vista und Windows 7. Cygwin unterstützt auch symbolische Verknüpfungen, die von Microsoft SFU angelegt wurden. Umgekehrt gilt dies nicht. SFU verwendet ebenfalls Dateien zur Emulation, aber in einem abweichenden Format.
Jenseits der Windows-Welt
Verknüpfungen ähnliche Konzepte finden sich auch in anderen Betriebssystemen: So unterstützt Unix Softlinks oder symbolische Links, welche den Zugriff auf eine Datei über einen alternativen Pfad erlauben. Anlegen lassen sie sich mit dem Dienstprogramm ln oder aber in jedem grafischen Dateimanager per Drag & Drop. Unter OpenVMS kommt ein Konzept namens Logical Name der Windows-Verknüpfung am nächsten. Angelegt werden solche Verknüpfungen mit dem Befehl DEFINE.
Hyperlink
Hyperlinks sind eine besondere Form von Verknüpfungen und bestehen aus einer Angabe des zu verwendenden MIME-Protokolls und einer eindeutigen Ressourcenbezeichnung, z. B. der URL eines Weblinks.
Programmierung
Abbildung von Objektbeziehungen
Eine Verknüpfung kann auch eine Beziehung zwischen zwei oder mehr Objekten herstellen; solche Assoziationen oder Beziehungen werden oft als UML-Diagramm oder Entity-Relationship-Diagramm dargestellt und finden entsprechend Verwendung in der Objektorientierten Programmierung oder in Datenbanken.
Referenz/Zeiger
In der Programmierung kann eine Variable/Bezeichner ein Alias für eine andere sein – wird der Referenz ein neuer Wert zugewiesen, so ändert sich auch der Wert des „Originals“.
Programmspezifische Verknüpfungen
Weiterhin gibt es programmspezifische Verknüpfungen, z. B. in Office-Suiten Verweise auf andere Dokumente oder Bilder. Diese können dann meist nur von der entsprechenden Anwendung ausgewertet werden, sind aber grundsätzlich auch nur Verweise auf Objekte an anderer Stelle.
Weblinks
- NTFS Link Shellextension (englisch) – Kontextmenü-Programm zum Erstellen von harten Links, Abzweigungspunkten und symbolischen Verknüpfungen auf NTFS-Partitionen
- Mark Russinovich: Einblick in den Windows Vista-Kernel: Teil 1. Dateibasierte symbolische Verknüpfungen
- GetFoldersize – Freeware zum Auflisten von symbolischen Verknüpfungen, harten Links und Abzweigungspunkten
Einzelnachweise
- COM-Komponenten-Handbuch: Systemprogrammierung und Scripting mit COM-Komponenten – Addison-Wesley, 2001, ISBN 3-8273-1936-6, S. 219.
- Specifying a Namespace Extension’s Location (englisch) – MSDN, 2016
- Die Attribute "Schreibgeschützt" und "System" von Ordnern können in Windows Server 2003, Windows XP, Windows Vista oder Windows 7 nicht angezeigt oder geändert werden – Microsoft-Support, letzte Änderung 24. September 2011.
- Creating Shell Extensions with Shell Instance Objects auf microsoft.com.
- Junction 1.06 – Microsoft TechNet; 2016; abgerufen am 6. August 2016; u. a. auch mit „Rekursion in Unterverzeichnissen“
- Windows Server 2003 Resource Kit Tools (englisch) – Microsoft; Stand: 28. April 2003; abgerufen am 7. November 2012.