AutoRun
Windows AutoRun
Das Windows-AutoRun ist nicht jedermanns Sache: Dumme Fragen, sinnfreies Herumsuchen, Tendenz zu Eigenleben, Vergesslichkeit und Nichtfunktionieren...
Also am besten abschalten und USBDLM überlassen. Abschalten geht am besten mit meinem Tool AutoRunSettings.
Mit Microsoft TweakUI kann man es nicht für Festplatten ausschalten und es aktiviert nebenbei AutoRun für Netz-Laufwerke...
USBDLMs AutoRun-Funktionen
USBDLM bietet zwei Mechanismen zum automatischen Starten von Programmen beim Anschließen eines Laufwerks und beim Einlegen eines Mediums (Karte, Disk, CD/DVD). Das sind zum einen das Ausführen der Zeile open= in einer autorun.inf auf dem jeweiligen Laufwerk und zum anderen AutoRun-Ereignisse, die in der USBDLM.INI konfiguriert werden.
Die jeweilige Kommandozeile wird standardmäßig im Kontext des angemeldeten Nutzers ausgeführt. Wenn kein Nutzer angemeldet ist, wird das Kommando nicht ausgeführt, außer es ist für die betreffende open-Zeile "system=1" gesetzt.
Remote-User werden ab V4.4.3 zwar berücksichtigt, aber immer nur einer. Die Auswahl erfolgt abhängig von der Einstellung "RemoteSessions" im Abschnitt [Settings]:
RemoteSessions=0 Remote-Sessions werden ignoriert
RemoteSessions=1 Remote-Sessions werden berücksichtigt, falls kein lokaler Nutzer aktiv (Standard)
RemoteSessions=2 Lokale und Remote-Nutzer sind gleichberechtigt
Falls mehrere Nutzer gleichwertig angemeldet sind, "gewinnt" der zuletzt angemeldete.
USBDLMs AutoRun funktioniert auch, wenn das Laufwerk in einen NTFS-Ordner gemountet wurde.
Durch Halten der Umschalt-Taste ("Shift") wird das Starten übergangen.
Ab V4.8.8 wird auch das Starten von Dokumenten unterstützt.
open=%drive%\test.txt
würde z.B. den für den aktiven Nutzer eingestellten Texteditor starten.
Wenn der Pfad Leerzeichen enthält, muss dieser in Anführungszeichen eingeschlossen werden, sonst muss USBDLM raten, wo der Pfad endet und die Parameter beginnen. Beispiel:
open="C:\Program Files\AntiVir\AntiVir.exe" %drive% /scan
Das ist auch der Fall, wenn Umgebungsvariablen zu Leerzeichen führen:
open="%ProgramFiles%\AntiVir\AntiVir.exe" %drive% /scan
Mit SafeCommandLines=1 im Abschnitt [Settings] ist das immer dann Pflicht wenn die Kommandozeile ein Leerzeichen enthält, auch wenn's nur für den Parameter ist: Beispiel:
open=C:\Tools\test.exe -t
Scheint offensichtlich, könnte aber auch "C:\Tools\test.exe -t.exe" meinen. Deshalb besser immer den Pfad in Anführungszeichen einschließen:
open="C:\Tools\test.exe" -t
Erstmals konfigurierte Autorun-Ereignisse beim Einlegen und Entnehmen eines Mediums aus einem Kartenleser funktionieren u.U. erst nach einem erneuten Anschließen des Gerätes oder nach einem Neustart des USBDLM-Dienstes.
Das "Arbeitsverzeichnis" ist standardmäßig das Stammverzeichnis des betreffenden Laufwerks. Ein abweichendes kann mit dem Parameter workdir angegeben werden. Das ist z.B. erforderlich, wenn ein Laufwerk "zum sicheren Entfernen" vorbereitet werden soll, da es auf das Arbeitsverzeichnis immer ein offenes Handle gibt.
Beispiel: Beim Anschließen eines USB-Laufwerks mit der Datenträgerbezeichnung "Backup" C:\BatchFiles\make_backup.cmd ausführen und das Laufwerk als Parameter übergeben. Maximal 60 Sekunden warten bis das beendet ist und dann "Hardware sicher entfernen" mittels RemoveDrive, wobei das Arbeitsverzeichnis wie oben beschrieben gesetzt wird:
[OnArrival]
VolumeLabel=Backup
open="C:\BatchFiles\make_backup.cmd" %drive%
wait=60s
open="C:\Tools\RemoveDrive.exe" %drive% -L
workdir=%windir%
Ohne workdir=%windir% wäre das Stammverzeichnis des Laufwerks das Arbeitsverzeichnis und das würde das "Sichere Entfernen" verhindern.
Ausführbare Dateien werden ab V4.6 zuerst im Windows-Suchpfad (Umgebungsvariable PATH) gesucht, dann im Arbeitsverzeichnis. Diese Änderung erfolgte, da Nutzer oft (wie auch früher in dieser Hilfe vorgemacht) z.B. open=explorer %drive% konfigurieren. So müsste man nur eine Schadsoftware "explorer.exe" nennen, auf einen Stick tun und an einen Rechner mit USBDLM anschließen wo das so konfiguriert ist.
Ein zusätzlicher Suchpfad kann konfiguriert werden, z.B.:
[Settings]
OpenSearchPath=C:\BatchFiles
Die open-Zeile kann auch aus einer autorun.inf extrahiert werden (ein AutoRunKey wird dann aber nicht überprüft):
[OnArrival]
open=%drive%\autorun.inf
Die USBDLM-Variablen können dem ausgeführten Programm als Umgebungsvariablen zur Verfügung gestellt werden. Anzugeben ist eine Liste mit den gewünschten Variablen.
Beispiel für das Laufwerk (z.B. U:) in der Variable drive
[Settings]
UsbdlmVariablesToOpenEnvironment=%drive%
Beide unten beschriebenen Mechanismen können für beim Nutzer-Login vorhandene Laufwerke ausgeführt werden, als ob sie gerade angeschlossen wurden.
[Settings]
AutoRunOnLogon=1