# Verknüpfung (Computer)

| Beteilige dich an der Diskussion! | Dieser Artikel wurde wegen inhaltlicher Mängel auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an der Diskussion! (+) Begründung: Diesem Artikel mangelt es an der Ausgewogenheit. Nur Windows wird (zu) ausführlich erklärt. --Thomei08 12:20, 31. Mär. 2015 (CEST) |
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 | Eigenschaft/Aktion | Symbolische Verknüpfung | Harter Link | Abzweigungspunkt |
| Löschen der symbolischen Verknüpfung/des harten Links/des Abzweigungspunktes… | 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 | Verschieben des Ziels | Symbolische Verknüpfung wird ungültig | Harter Link bleibt gültig | Abzweigepunkt wird ungültig |
| Relative Zielangabe | Relative Zielangabe | möglich | (entfällt) | unmöglich (wird beim Speichern expandiert) | unmöglich (wird beim Speichern expandiert) |
| Dateisystemübergreifend: Laufwerksbuchstaben-, Partitions-, Volumenübergreifend | Dateisystemübergreifend: Laufwerksbuchstaben-, Partitions-, Volumenübergreifend | möglich | unmöglich (da Verweis auf denselben Dateideskriptor) | möglich |
| Auslesen des Ziels | Auslesen des Ziels | möglich | unmöglich (da Verweis auf denselben Dateideskriptor) | möglich |
| Windows | für Dateien | ab Vista / Windows 2008; (anlegen nur mit Administratorrechten) | ja | nein |
| Windows | für Verzeichnisse | ab Vista / Windows 2008; (anlegen nur mit Administratorrechten) | nein | ja |
| Unix | für Dateien | ja | ja | (entfällt) |
| Unix | 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 virtual folder, zu dt. virtueller Ordner oder virtuelles Verzeichnis) von Windows handelt es sich um ein Verzeichnis mit den Eigenschaften „schreibgeschützt“ und/oder system, 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:
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 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):
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 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 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.
oder
oder
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.
Ein Abzweigungspunkt kann über folgende Befehle aufgehoben werden:
oder
oder
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:
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.