Autorun
# Autorun

Autorun ist die Funktion von Windows, Datenspeicher automatisch zu durchsuchen und Dateien automatisch zu öffnen beziehungsweise auszuführen, sobald die Datenträger für das Betriebssystem verfügbar sind. Dadurch kann beispielsweise beim Einlegen einer CD oder DVD automatisch ein Installationsprogramm starten. Für Dateien auf Disketten und in Rechnernetzen war die Funktion zunächst gesperrt.

## Windows

Windows sucht im Stammverzeichnis des Datenspeichers nach eindeutigen Informationen über dessen zugedachten Verwendungszweck. Dazu kann eine bekannte Dateinamenserweiterung dienen oder eine Konfigurationsdatei mit dem Namen autorun.inf. In einer solchen Datei wird ausdrücklich festgelegt, wie das System verfahren soll. Diese Funktion sollte nicht mit der Autoplay Funktion verwechselt werden, welche, unabhängig von der Autorun-Funktion lediglich beim Einlegen einer CD oder DVD deren Mediendateien automatisch abspielt.

### Sicherheitsaspekte

Der Autostartmodus birgt ein hohes Sicherheitsrisiko. Durch ihn können völlig unbemerkt Schadprogramme installiert werden, da statt der unten beschriebenen Konfigurationsdatei auch ausführbare Programme unkritisch vom System verarbeitet werden, auch wenn diese nicht als Textdateien vorliegen, sofern diese nur den Dateinamen autorun.inf tragen. Die Benutzerprivilegien des Systems liegen dabei noch über den Privilegien des Administrators. Dieses Szenario ist nicht auf USB-Sticks und andere beschreibbare mobile Datenspeicher beschränkt, die zum Datenaustausch mit verschiedensten Computern verbunden werden. Selbst scheinbar harmlose Audio-CDs haben sich im Fall des Sony-BMG-Kopierschutzskandals als gefährlich erwiesen.
Autorun kann in der Windows-Registry abgeschaltet oder eingeschränkt werden. Außerdem kann Autorun durch Halten der Umschalttaste während des Verbindens mit dem Datenspeicher temporär verhindert werden. Die Standardkonfiguration bei der Installation des Betriebssystems erlaubt jedoch die Ausführung dieser Funktion.

## Autorun.inf

Bei dieser Konfigurationsdatei handelt es sich um ein gewöhnliches Textformat, in welchem Windows Shell-Kommandos (siehe u. a. Liste von DOS-Kommandozeilenbefehlen) durch Zuweisungen von Parametern notiert werden. Der notwendige Aufbau einer „autorun.inf“-Datei sieht wie folgt aus (Beispiel):
Zeile 1 gibt an, dass dieses der auszuwertende Abschnitt der Autorun-Datei ist, Zeile 2 sagt aus, welche Programmdatei ausgeführt werden soll und Zeile 3 beschreibt, welches Icon für das sonst übliche Laufwerksicon benutzt werden soll. Werden keine Pfade angegeben, werden die Dateien im Hauptverzeichnis desselben Laufwerks erwartet. Es können auch relative Pfade verwendet werden. Die Option action generiert den Eintrag „Programm starten“ in der ersten Zeile des AutoPlay-Auswahlfensters.
Mit folgender Zeile kann dem Datenträger ein Name zugewiesen werden:

### Kontextmenü

Außerdem können zusätzliche Kontextmenüs (erscheinen üblicherweise durch Betätigen der rechten Maustaste) definiert werden. Dazu muss folgender Aufbau verwendet werden:
Jedes Kontextmenü muss eine eigene eindeutige Bezeichnung haben. Die erste Zeile legt fest, welcher Text im Kontextmenü angezeigt werden soll, die zweite Zeile enthält das zu startende Programm.
    shell=Name-n
legt fest, welche Bezeichnung die Standard-Aktivität sein soll – die vollautomatisch oder durch einen Doppelklick auf das Laufwerksymbol gestartet werden soll.
shell=Kontext-Standard bekommt offenbar Vorrang vor dem älteren open/shellexecute. Beide Varianten können gleichzeitig angegeben werden. Dann sollte jedoch die Beschriftung von shell\Kontext-Standard= und action= sowie die resultierende Wirkung gleich sein, um Nutzer nicht durch unterschiedliches Verhalten auf verschiedenen Systemen zu verwirren.

#### Hotkey

Wie bei anderen Menüs in Windows auch lassen sich Hotkeys definieren. Dabei wird dem gewünschten Kennbuchstaben ein & vorangestellt. Bei der Auswahlanzeige wird dieser Buchstabe dann unterstrichen dargestellt und das Menüfeld kann durch Eingabe dieses Buchstabens auf der Tastatur ausgewählt und das Programm unmittelbar gestartet werden.
sorgt dafür, dass beim Drücken von n der erste Eintrag und bei Drücken des i der zweite Befehl gestartet wird. Mehrere Befehle mit gleichem HotKey in diesem Kontextmenü sollten vermieden werden; das Verhalten ist dann nicht vorhersagbar und es könnte zu unerwünschter Programmausführung kommen.

### Nicht-ausführbare Dateien (Dokumente)

Oft sollen HTML-Dateien angezeigt werden – jedoch mit dem Standardbrowser des momentanen Benutzers und nicht zwangsläufig mit open=iexplore.exe index.htm (Microsoft Internet Explorer). Auch Audio/Video-Dateien sollen mit dem Standardplayer des gerade benutzten PC abgespielt werden; das ist nicht immer der Windows Media Player – der bei Windows XP mplay32.exe hieß und inzwischen als wmplayer.exe anzugeben wäre.
    shellexecute=MySlides.ppt [Parameter] startet die angegebene Powerpoint-Präsentation, ohne dass beim Herstellen des Datenträgers bekannt sein muss, welcher Version welchen Office-Paketes unter welchem Betriebssystem auf dem später benutzten Rechner die Dateiendung ppt zugeordnet ist, wie beispielsweise die EXE-Datei heißt und in welchem Pfad sie zu suchen wäre.
Hinweis: open erhält Vorrang vor shellexecute – es sollte also nur eines angegeben werden.
Das command im Kontextmenü ist wie auch open immer auf eine ausführbare Datei (EXE, CMD, BAT) angewiesen. Um das zu erreichen, gibt es folgende Möglichkeiten:
    Funktioniert mit allen Dokumenten, nicht nur solche für den Browser. Der Datei-Typ muss dem Benutzer aber unbedingt schon bekannt sein.
    (Schrägstriche „Normal“ im Pfad; file: entspricht dem http:// und muss dem Pfad vorangestellt werden)
       shell\RunDLL=Standardbrowser
       shell\RunDLL\command=RunDLL32.exe url.dll,FileProtocolHandler file:README/survey.html
    Weil auf Doppelklick etwas anderes kommt, kann man noch ein Verzeichnis anbieten:
       shell\Explorer=Explorer Benutzerdaten
       shell\Explorer\command=Explorer.exe /e, Benutzerdaten\
    Programm zum Öffnen von „multimedia.xyz“ anbieten, ggf. auswählen:
       shell\openwith=ShockFlashZoing
       shell\openwith\command=RunDLL32.exe shell32.dll,OpenAs_RunDLL multimedia.xyz
    Mit aufflackerndem Konsolenbildschirm dazwischen, nicht so schön:
       shell\CMD=Kommandozeileninterpreter
       shell\CMD\command=cmd.exe /c start index_DieseDVD.html
    Standard-Aktion festlegen:
       shell=RunDLL

### Festplatten

Es lassen sich nicht nur Wechselmedien, sondern auch Festplatten mit autorun.inf ausstatten. Damit wären Icons auf dem „Arbeitsplatz“ darzustellen, also beispielsweise ein auffallendes Symbol für die Systempartition C: und andere dagegen zur Charakterisierung von Datenpartitionen sowie freigegebener Ordner im Netzwerk.
Diese erscheinen auch, wenn Ordner zur Abspeicherung angeboten werden, erleichtern damit die schnelle Orientierung und vermeiden eine Auswahl des falschen Ordners.
Auch Aktionen (Doppelklick und Kontextmenü im Arbeitsplatz) können genauso definiert werden; der label gewinnt meist die Oberhand über Partitions- und Freigabenamen.
Änderungen werden wirksam, wenn die Verbindung erfolgt bzw. der PC gebootet wird.
Bei Disketten wird autorun.inf allerdings nicht „von selbst“ Aktionen ausführen können.
Letzten Endes sind die autorun.inf (wie auch die desktop.ini) immer nur Hinweise (hints) für das Betriebssystem. Ob eine bestimmte Windows-Version dem folgen kann oder ob diese Funktionalitäten bewusst – beispielsweise aus Sicherheitsgründen – abgeschaltet sind, entscheidet sich im konkreten Einzelfall.

## Andere Betriebssysteme

Die AutoRun-Datei ist im Klartext für andere Betriebssysteme (wie Linux oder Mac) lesbar. Mittlerweile ist die Erkennung der Microsoft-autorun.inf oft schon integriert. Zumindest sind Werkzeuge vorhanden, die auf das Einlegen eines Mediums hin nach einer autorun.inf-Datei suchen, ihren Abschnitt [AutoRun] lesen und je nach Wunsch reagieren; entsprechende Skripte können leicht neu geschrieben werden.
Dazu eignen sich insbesondere die neutralen Einträge
* label=
* icon=
* shellexecute=
Windows-Symbol-Dateien, Icons, haben ein altbekanntes, einfaches Format, das andere Betriebssysteme meist problemlos anzeigen oder vorübergehend geeignet konvertieren können. Hier ist eine einzelne ICO-Datei zu verwenden, kein Abschnitt aus einer .EXE oder .DLL.
Auf shellexecute hin wäre, sofern er bekannt ist, der entsprechende Dateityp zu öffnen; Dokumentenformate wie HTML, TXT, PDF, Multimedia, DOC oder DOCX sind hier aussichtsreich.
Diese Dateien sollten sicherheitshalber im Hauptverzeichnis des Mediums stehen, da ein fremdes Betriebssystem Schwierigkeiten mit dem Pfadtrennzeichen \ haben könnte (es wird / erwartet).
Es ist jedoch ohnehin empfehlenswert, dass im Hauptverzeichnis stets ein README/LIESMICH, index.html oder Ähnliches vorhanden ist, wenn der Datenträger in andere Hände gegeben wird – so dass das Medium leicht „von Hand“ gelesen werden kann, wenn Probleme mit Auto-Optionen auftreten oder unbekannte Automatismen unerwünscht sind.