Als Verknüpfung ( oder ) 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 Startmenü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.

In Windows 95 und Windows 98 konnten Dateiverknüpfungen für DOS Programme angelegt werden, welche mit einer Vielzahl von speziellen Einstellungen versehen werden konnten, um das DOS Programm unter Windows 9x zur Ausführung bringen zu können. Dies war für ca. 10 % der DOS Spiele notwendig, die unter Windows 95/98 nicht out of the box zum Laufen zu bringen waren.

Ordnerverknüpfung Bei der Ordnerverknüpfung (englisch auch , zu dt. virtueller Ordner oder virtuelles Verzeichnis) von Windows handelt es sich um ein Verzeichnis mit den Eigenschaften „schreibgeschützt“ und/oder , 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 oder 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 ‚‘ oder ‚‘ und kurz ‚‘ 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 und linkd.exe – 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 ) kann im Explorer nun auch über "C:\Neue Verbindung" (englisch ) 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 ‚‘) auch weitere Verbindungen – rekursiv durch Unterordner – angezeigt werden.

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 ‚‘ oder ‚‘ – 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 <>) 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