Index




USB Drive Letter Manager V4.5.1


Einstieg

Installation

Konfiguration

Probleme

History

Lizenz-Vereinbarung




Homepage:
http://www.uwe-sieber.de/usbdlm.html

Tips für USB-Laufwerke:
http://www.uwe-sieber.de/usbstick.html


EMail:
mail@uwe-sieber.de







Einstieg



Der USB Drive Letter Manager 'USBDLM' ist ein Window-Dienst, der Kontrolle über die Zuordnung von Laufwerksbuchstaben verschafft.
Man kann Buchstaben für USB-Laufwerke definieren, auch abhängig vom USB-Port, der Laufwerks-Größe u.v.a.
Konflikte mit Netz- und Subst-Laufwerken werden auch ohne Konfiguration behoben.
Nicht-USB-Laufwerke können auch behandelt werden, indem deren BusType oder Geräte-ID konfiguriert wird.
Als Windows-Dienst ist USBDLM unabhängig von den Rechten des angemeldeten Nutzers.

USBDLM läuft unter Windows 2000, XP, Server 2003, Vista, Windows 7 und Server 2008. Unter folgenden Systemen wurde getestet:
  • Windows 2000 SP4 + Rollup 1
  • Windows XP SP2
  • Windows XP SP3
  • Windows XP x64 SP1
  • Windows Server 2003 SP1
  • Windows Vista Bussiness N SP2
  • Windows Vista Bussiness N x64 SP1
  • Windows 7 Ultimate x64
  • Windows Server 2008
  • Windows Server 2008 R2 x64



    Installation

    USBDLM kommt nicht in einer SETUP.EXE, die Installation erfolgt manuell, siehe hier: Installation.


    Konditionen

    USBDLM ist Freeware für die private Nutzung sowie für Bildungseinrichtungen. Anderenfalls ist - nach einer 30-tägigen Testzeit - pro Computer eine Lizenz nötig, s.unten.
    Bildungseinrichtungen gelten als solche, wenn Zahl der eingeschriebenen Schüler und Studenten höher ist als die der sonstigen Mitarbeiter.

    Preise gibts hier:
    http://www.uwe-sieber.de/usbdlm.html

    Lizenz-Vereinbarung

    Die Software ist auch ohne Lizenz voll funktionsfähig - es gibt keine "Vollversion".



    Wozu?

    Beim erstmaligen Anschließen eines USB-Datenträgers (Stick, CardReader, Festplatte) vergibt Windows 2000/XP/Vista dafür den ersten freien lokalen Laufwerks-Buchstaben - der Datenträger wird auf den Buchstaben 'gemountet', dort 'bereitgestellt'. Den Buchstaben kann man dann in der Datenträger-Verwaltung mit einiger Klickerei umstellen und im Normalfall wird Windows sich das für genau diesen Datenträger merken. Windows merkt sich aber nur genau eine Zuordnung pro Buchstabe.
    Für jeden neuen USB-Datenträger geht das Ganze von vorne los, ebenso wenn man ein Gerät, das im Widerspruch zu den USB-Standards keine Seriennummer hat, an einen anderen USB-Port anschließt.

    Netz- und Subst-Laufwerke sind ab Windows XP nutzerspezifisch und damit keine 'lokalen' mehr. Hat man auf dem ersten freien lokalen Buchstaben ein Netz- oder Subst-Laufwerk, bekommt ein neues USB-Laufwerk unter XP genau diesen Buchstaben und es scheint, als hätte das Laufwerk keinen Buchstaben bekommen. Tatsächlich kommt man nur nicht ran...
    Mit dem XP-ServicePack 3 wird dieses Problem für erstmals angeschlossene Laufwerke behoben.

    Mit USBDLM kann man
  • Konflikte mit Netz- und Subst-Laufwerken beheben lassen (keine Konfiguration nötig)
  • Laufwerksbuchstaben für Netz- und Susbst-Laufwerke reservieren
  • Für alle neuen USB-Datenträger eine Liste von Standard-Buchstaben vorgeben, auch abhängig von einer Vielzahl an Kriterienn, z.B. Laufwerks-Typ, Anschluß (USB, FireWire), USB-Port, Datenträgerbezeichnung, Größe des Datenträgers, Hardware-ID u.v.a.
  • Laufwerksbuchstaben von Kartenlesern entfernen und genau dann einen Buchstaben zuordnen, wenn eine Karte eingelegt wird
  • Den Nutzer vor dem Zuordnen eine Laufwerksbuchstabens nach einem Passwort fragen
  • Beim Anschließen eines Laufwerks einen aussagekräftigen Balloontip anzeigen lassen
  • Ausführen eines Autostarts, auch abhängig von o.g. Kriterien
  • Abfrage eine Passwortes
  • u.v.a.


    Statt Buchstaben können auch leere NTFS-Ordner als Mount-Punkte angegeben werden, was aber einige Einschränkungen und Probleme mit sich bringt, siehe Konfiguration.




    Installation



    Einfach die ZIP-Datei entpacken, z.B. nach C:\Programme - ein Ordner USBDLM ist enthalten. Im Ergebnis sollten die Dateien dann z.B. in C:\Programme\USBDLM liegen.

    Unter Vista und Windows 7 besser in einen Order wie C:\Tools installieren, da unter C:\Programme die USBDLM.INI kommentarlos in den "Virtal Store" umgeleitet wird, falls sie ein eingeschränkter Nutzer bearbeitet.

    USBDLM muß auf einem lokalen Laufwerk installiert sein, es funktioniert nicht, wenn es von einem Netz- oder Subst-Laufwerk gestartet wird.

    Dann in die USBDLM.INI die gewünschen LW-Buchstaben eintragen. Es ist ein Beispiel-INI enthalten - die USBDLM_sample.INI. Entweder eine neue USBDLM.INI anlegen oder die USBDLM_sample.INI in USBDLM.INI umbenennen und bearbeiten.

    Zum Installieren des USBDLM-Dienstes einfach die USBDLM.EXE mit dem Paramter -install starten.
    Genau das macht die _install.cmd

    Damit werden keinerlei Dateien kopiert. USBDLM wird nur als Dienst registriert und gestartet.

    Ohne Admin-Rechte startet sich die USBDLM.EXE selbst nochmal und fordert dabei die nötigen Admin-Rechten an.

    USBDLM trägt sich mit der Startart 'Automatisch' ein - wird also bei jedem Systemstart automatisch geladen.


    Deinstallation:
    Der Dienst kann mit dem Parameter -uninstall gestoppt und deinstalliert werden - das macht die 

    _uninstall.cmd

    Der Unterstrich am Beginn des Dateinames dient allein dazu, die Command-Script-Dateien bei alphabetischer Sortierung am Anfang zu haben...

    Beides geht auch ohne MessageBox:

    USBDLM -silentinstall
    USBDLM -silentuninstall

    Es gibt dann bei Erfolg Errorlevel 0, sonst 1 zurück.

    Der installierte Dienst kann mit _stop.cmd und _start.cmd gestoppt und gestartet werden.

    Auf der Kommandozeile kann man auch das Windows-Kommando NET bemühen:

    net stop USBDLM
    net start USBDLM

    Hinweis: Wenn der USBDLM-Dienst gestartet wird, wird die USBDLM.EXE aus dem Pfad genommen, aus dem der Dienst installiert wurde! Von wo aus der Dienst gestartet wird, spielt keine Rolle, soll ein neues Verzeichnis benutzt werden, dort einmal  _uninstall und dann _install ausführen.


    Die Laufwerks-Einstellungen in der USBDLM.INI können geändert werden, ohne den Dienst neu zu starten - die INI wird bei jedem Anschließen eines Laufwerks gelesen, wenn sich ihr Datei-Datum/Uhrzeit geändert hat.

    Mehr dazu unter Konfiguration.


    Hinweis:

    Die CMD-Dateien enthalten nur einfache Kommandozeilen wie
    USBDLM -install
    Deshalb müssen sie vom USBDLM-Ordner aus gestartet werden, sonst wird die USBDLM.EXE nicht gefunden. Soll die CMD von einem anderen Ordner aus gestartet werden, kann man die CMD-Dateien so anpassen:
    "%~dp0USBDLM" -install

    %~dp0 ist ein Platzhalter für Laufwerk und Pfad zur CMD-Datei. Das funktioniert so: %0 ist der Platzhalter für die laufende CMD-Datei, z.B. C:\Program Files\USBDLM\_install.cmd.
    ~dp ist ein "Modifizierer" und liefert Laufwerk plus Pfad (drive + path), z.B. C:\Program Files\USBDLM\.

    Mehr über Batch-Parameter und Modifizierer:
    http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx







    Konfiguration



    USBDLM wird über eine INI-Datei namens USBDLM.INI konfiguriert die im selben Verzeichnis wie die USBDLM.EXE liegt. Der Windows-Explorer zeigt ja standardmäßig keine Dateierweiterungen wie "INI" an - INI-Dateien nennt er "Konfigurationseinstellungen".
    Eine INI-Datei kann z.B. mit dem Windows-Editor 'Notepad' bearbeitet werden - einfach im Explorer doppelklicken.
    Mitgeliefert wird als Beispiel die USBDLM_Sample.INI - die kann man sich umbenennen oder eine neue USBDLM.INI anlegen.

    Das Editieren der USBDLM.INI erfordert Admin-Rechte, da sie im Programme-Verzeichnis liegt - da haben auf NTFS-formatierten Laufwerken nur Admins Schreibzugriff.
    Unter Vista kann hier der "Virtual Store" zuschlagen: Das Schreiben der INI-Datei wird dann nach 
    C:\Users\(UserName)\AppData\Local\VirtualStore\Program Files\USBDLM
    umgelenkt. Der USBDLM-Dienst liest aber aus seinem Verzeichnis. Also unter Vista die USDBLM.INI immer als "echter" Administrator bearbeiten. Oder USBDLM nicht unter C:\Programme installieren, sondern irgendwo anders, z.B. C:\Tools\USBDLM - der Vista Virtual Store ist nur für C:\Programme wirksam.

    Für die INI-Datei den für Windows-Dienste korrekten Daten-Ordner zu benutzen, ist nicht sonderlich handlich. Das wäre unter einem deutschen XP z.B. "C:\Dokumente und Einstellungen\LocalService\Anwendungsdaten\USBDLM". Unter Vista ist es "C:\Windows\System32\config\systemprofile\AppData\Roaming\USBDLM". Unter Vista x64 wird "C:\Windows\System32" aber für Win32-Programme nach "C:\Windows\SysWOW64" umgeleitet - da sieht kein Nutzer mehr durch.
    Ab V4.3 sucht USBDLM die INI-Datei zuerst dort. Wer's mag... Im Zweifel über den richtigen Pfad kann man die Log-Datei aktivieren, den Dienst neu staten und nachsehen, wo die INI zuerst gesucht wird.


    Wie INI-Dateien funktionieren

    INI-Dateien sind in Abschnitte unterteilt - jeder Abschnitt beginnt mit dem Abschnitts-Namen in eckigen Klammern, z.B. [DriveLetters] und erstreckt sich bis zum Beginn des nächsten Abschnitts oder bis zum Datei-Ende. Jeden Abschnitt darf es nur einmal geben! Die Konfigurations-Einstellungen stehen unter den jeweiligen Abschnitts-Namen - ihre Bedeutung ist abhängig vom Abschnitt in dem sie stehen. Innerhalb eines Abschnitts darf es jeden Wert nur einmal geben.
    Kommentarzeilen beginnen mit einem Semikolon. Kommentare sind nur am Zeilenanfang zulässig.

    Niemals Abschnitts-Zeilen so auskommentieren:

    ;[DriveLetters20]

    Die Einstellungen aus diesem Abschitt gehören dann zum vorherigen!
    So legt man einen Abschnitt z.B. korrekt lahm:

    [-----DriveLetters10]

    Es ist nach wie vor ein Abschnitt, aber keiner für den sich jemand interessiert.


    Alternativ Regsitry

    Ab V3.3.1 kann USBDLM seine Einstellungen alternativ aus der Registry lesen, und zwar unter
    HKLM/Software/Uwe Sieber/USBDLM
    Wenn dieser Schlüssel vorhanden ist, wird die USBDLM.INI ignoriert! Nur die Einstellungen für die Log-Datei kommen immer aus der USBDLM.INI.
    Für jeden INI-Abschnitt ist ein Schlüssel anzulegen, die Werte müssen vom Typ REG_SZ sein. Damit USBDLM Änderungen im laufenden Betrieb bemerkt, kann der Wert (Standard) unter HKLM/Software/Uwe Sieber/USBDLM auf einen anderen (beliebigen) Wert gesetzt werden.. USBDLM liest dann die Konfiguration neu ein.
    Hier gibt's eine Beispiel REG-Datei (natürlich erst speichern und bearbeiten, nicht gleich ausführen...): http://www.uwe-sieber.de/files/usbdlm_beispiel.reg

    Unter x64 Windows wird die Win32-Version von USBDLM umgeleitet nach
    HKLM/Software/Wow6432Node/Uwe Sieber/USBDLM


    Einige Beispiele

    Ganz ohne Konfiguration behebt USBDLM Konflikte mit Netz- und Subst-Laufwerken.

    USBDLM bietet vielfältige Möglichkeiten, auf die Vergabe von Laufwerksbuchstaben Einfluß zu nehmen. Für jede Vorgabe gibt es einen Abschnitt in der USBDLM.INI mit maximal 9 Laufwerksbuchstaben. Die einfachste Variante für Laufwerksbuchstaben für USB-Sticks und Festplatten sieht so aus:

    [DriveLetters]
    Letter1=U
    Letter2=V
    Letter3=W
    Letter4=X
    Letter5=Y


    Die Buchstaben werden von 1 bis 9 eingelesen. Auf den ersten geeigneten wird dann umgemountet.

    Wenn nur Buchstaben im Spiel sind, kann man auch eine kompakte Notation in Listenform nutzen:

    [DriveLetters]
    Letters=U,V,W,X,Y

    Oder noch kürzer:

    [DriveLetters]
    Letters=UVWXY

    Aufeinanderfolgende Buchstaben können per "von-bis" notieret werde:

    [DriveLetters]
    Letters=U-W

    U-W wäre die Kurzfassung von U,V,W. Absteigend gehts auch, W-U steht also für W,V,U.


    Ab V4.3 verstehen alle Einträge alle Notationsvarianten (Buchstabe, Buchstaben-Liste, Mountpunkt, INI-Datei), eingelesen werden sie in folgender Reihenfolge:
    Letters
    Letter
    Letter1 bis Letter9

    [DriveLetters]
    Letters=X-Z
    Letter1=J
    Letter2=K

    So würde USBDLM die Laufwerksbuchstaben X, Y, Z, J und K probieren.



    Wenn generell Mangel an Laufwerksbuchstaben herrscht, kann nach dem letzten Buchstaben noch einen NTFS-Ordner für Notfälle (kein freier Buchstabe übrig) konfiguriert werden:
    Letter9=C:\%DevName%

    %DevName% ist eine USBDLM-Variable und wird durch den Geräte-Namen des Laufwerks ersetzt. USBDLM legt dann einen Ordner an und mountet das Laufwerk dorthin. Das funktioniert nur auf NTFS-Laufwerken, das Dateisystem des zu mountenden Laufwerks ist dagegen egal.

    Oder man sagt, wenn kein Buchstabe mehr frei ist, dann eben nicht:
    Letter9=-

    USBDLM ordnet standardmäßig immer nur einen Laufwerksbuchstaben oder Mountpunkt zu. Will man Laufwerksbuchstaben und NTFS-Mountpunkt gleichzeitig oder auch mehrere NTFS-Mountpunkte haben, kann ab V4.3 MaxMountPoints auf einen Wert größer 1 konfiguriert werden, entweder im betreffenden Abschnitt oder als Voreinstellung im Abschnitt Settings.

    Beispiel für Buchstabe U: oder V: und zwei NTFS-Ordner:

    [DriveLetters10]
    MaxMountPoints=3
    Letters=U,V
    Letter2=C:\_USB\%DevName%
    Letter3=C:\_Share\Drive_%DriveLetter%

    Das Zuordnen mehrerer Buchstaben läßt Windows nicht zu, wenn man unbedingt will, kann man sich mit dem Windows-SUBST-Kommando behelfen.


    Kein Buchstabe / Laufwerk entfernen

    Um ein Laufwerk zu verstecken, kann auch "kein Buchstabe" konfiguriert werden - ein einzelnes Minus-Zeichen steht dafür.
    Beipiel um die Buchstaben aller USB-Laufwerke zu entfernen:

    [DriveLetters]
    Letter1=-

    Soll das Gerät gleich ganz entfernt werden ("Vorbereiten zum sicheren Entfernen"), konfiguriert man 2x Minus:

    [DriveLetters]
    Letter1=--


    Um auf einer USB-Festplatte die erste Partition auf X: zu haben und die zweite Partition zu verstecken:

    [DriveLetters]
    Letter1=X
    Letter2=-

    Das funktioniert aber nur, wenn X: auch frei ist, sonst wird für alle Partitionen der Platte der Buchstabe entfernt!

    Um auf einer USB-Festplatte die erste Partition zu verstecken und die zweite unter X: zu haben, funktioniert das nicht:

    [DriveLetters]
    Letter1=-
    Letter2=X

    Warum? Es wird für das Laufwerk von Letter1 bis 9 nach einem freien Buchstaben gesucht. "Kein Buchstabe" ist aber immer frei, somit wird Letter2 nie erreicht. Allen Partitionen wird der Buchstabe weggenommen.
    Hier hilft ein eigener Abschnitt mit der Partitionsnummer als Kriterium .


    Buchstaben abhängig von bestimmten Kriterien

    Um einen [DriveLetters] Abschnitt nur auf bestimmte Laufwerke anzuwenden, kann man Kriterien definieren. Die Abschnitte sind dann zu numerieren, es wird von 1 aufsteigend überprüft.

    USBDLM benutzt immer nur die Einstellungen des ersten passenden Abschnitts! Es gibt kein Ausweichen auf den nächsten passenden Abschnitt, falls alle konfigurierten Buchstaben eines Abschnitts vergeben sind!


    Beispiel zum Sperren von Laufwerken über 10 GB, kleinere auf U, V und W:

    ;ab 10GB Buchstaben entfernen
    [DriveLetters1]
    MinDiskSize=10GB
    Letter1=-

    ;alle anderen auf U, V, W
    [DriveLetters2]
    Letter1=U
    Letter2=V
    Letter3=W

    Oder kurz:

    [DriveLetters2]
    Letters=U,V,W

    Das ist ausführlich unter Buchstaben abhängig von bestimmten Kriterien beschrieben.


    Mounten in NTFS-Ordner

    Statt Laufwerks-Buchstaben können auch leere NTFS-Order als Mount-Points ('Bereitstellungspunkte') angegeben werden, siehe Mounten in NTFS-Ordner


    Das Anzeigen von Balloontips, das Überprüfen von Laufwerksbuchstaben beim Start und vieles mehr läßt sich konfigurieren:
    Sonstige Einstellungen - [Settings] 





    Mounten in NTFS-Ordner



    Statt Laufwerks-Buchstaben können auch leere NTFS-Order als Mount-Points ('Bereitstellungspunkte') angegeben werden. 
    Fall nicht vorhanden, legt USBDLM den Ordner-Pfad an.
    Die Ordner bleiben auch nach dem Entfernen des Laufwerks standardmäßig erhalten und können auch problemlos umbenannt werden. USBDLM akzeptiert das, solange der Ordner sich im gleichen übergeordeten Ordner wie der konfigurierte befindet.

    Beim Mounten in NTFS-Ordner kann man den Gerätenamen, die Datenträger-Bezeichung oder jede andere USBDLM-Variable nutzen:
    Einfach "%DevName%" oder "%VolumeLabel%" konfigurieren - das wird dann durch den Gerätenamen bzw. die Datenträgerbezeichnung ("Volume Label") ersetzt.
    Beispiel: Angenommen der Geräte-Name ist "Corsair Flash Voyager"...

    [DriveLetters]
    Letter1=C:\_USB\%DevName%

    Dann würde USBDLM den Ordner "C:\_USB\Corsair Flash Voyager" anlegen und das Laufwerk dorthin mounten.


    Im Gegensatz zu Laufwerksbuchstaben bleiben NTFS-Mountpunkte beim Entfernen des Laufwerks erhalten. USBDLM löscht sie aber, wenn das Laufwerk entfernt wird. Wenn es das nicht tun soll:

    [Settings]
    DeleteMountPointsOnRemoval=0

    Wenn allerdings ein Laufwerk entfernt wird, während der USBDLM-Dienst nicht läuft, z.B. wenn Windows schon heruntergefahren ist, klappt das mit dem Löschen des Ordners natürlich nicht.
    USBDLM kann das beim nächten Start oder beim Nutzerwechsel nachholen. Konfiguriert werden die Ordner, die die Mountpunkte enthalten, passend zum oberen Beispiel also

    [DeleteUnusedNtfsMountpoints]
    Folder1=C:\_USB
    Folder2=


    Ab V4.3 kann USBDLM einem Laufwerk auch mehrere NTFS-Ordner als Mountpunkt zuordenen, auch zusätzlich zu einem Laufwerksbuchstaben. Um kompatibel zu bleiben, ist auch USBDLM V4.3 auf einen MountPunkt beschränkt, das kann aber über MaxMountPoints=n konfiguriert werden, zum einen global im Abschnitt [Settings] und zum anderen in jedem [DriveLettersXX] Abschnitt.

    Beispiel für Buchstabe U: und zwei NTFS-Ordner:

    [DriveLetters10]
    MaxMountPoints=3
    Letter1=U
    Letter2=C:\_USB\%DevName%
    Letter3=C:\_Share\Drive_%DriveLetter%

    Beispiel für Buchstabe U: falls frei, sonst kein Buchstabe, aber immer zwei NTFS-Ordner:

    [DriveLetters10]
    MaxMountPoints=3
    Letter1=U,-
    Letter2=C:\_USB\%DevName%
    Letter3=C:\_Share\Drive_%DriveLetter%


    Der Standardwert für MaxMountPoints ist 1 und kann im Abschnitt Settings geändert werden. Zulässig sind Werte von 1 bis 10.

    [Settings]
    MaxMountPoints=10



    Das Mounten in NTFS-Ordner bringt allerdings einige Nachteile mit sich: Viele Windows-Funktionen für Laufwerke stehen dann über den Windows-Explorer nicht mehr zur Verfügung, z.B. AutoRun, Auswerfen, Defragmentieren, Formatieren...

    Der Windows-Explorer betrachtet das gemountete und das Wirtslaufwerk als ein und dasselbe. Deshalb werden beim Drag+Drop Dateien standardmäßig verschoben statt kopiert.

    Für Wechseldatenträger sieht Windows keine Papierkorb-Funktion vor. Mountet man aber einen Wechseldatenträger in einen NTFS-Ordner, wird das von Windows beim Löschen nicht berücksichtigt - es wird dann der Papierkorb des Wirts-Laufwerks benutzt!
    Normalerweise werden die Dateien beim 'Löschen' dorthin verschoben, d.h. es wird nur der Datei-Eintrag geändert, die Daten bleiben unangetastet.
    Löscht man eine Datei auf einem in ein NTFS-Verzeichnis gemounteten Laufwerk, geht das mit dem Verschieben nicht, da sich Datei und der Papierkorb-Ordner auf verschiedenen physischen Laufwerken befinden.
    Die zu löschende Datei wird deshalb in den Papierkorb kopiert und anschließend gelöscht, was je nach Dateigröße entsprechend dauert. Bei Ordnern funktioniert's gar nicht - es gibt eine irreführende Fehlermeldung ("Zugriff verweigert"). Also beim Löschen die Umschalt-Taste festhalten um den Papierkorb zu übergehen oder den Papierkorb des Wirtslaufwerks ganz abschalten.

    Unter "Hardware sicher entfernen" werden NTFS-Mountpunkte nicht unterstützt - USB-Laufwerke ohne Laufwerksbuchstaben heißen dann alle gleich "USB-Massenspeichergerät", es sei den, USBDLM sorgt für aussagekräftige Namen...

    Bekommen die Laufwerke immer wieder Laufwerksbuchstaben, ist eine andere Software am Werk, die die Buchstaben bei passender Gelegenheit überprüft und ggf. zuordnet.
    Bekannt dafür ist das U3 Launchpad auf U3-Sticks (die U3launch.exe auf dem Pseudo-CDROM), siehe kein Medium, kein Buchstabe.


    Alles in Allem ist das Mounten in NTFS-Ordner nicht zu empfehlen. Bei knappen Laufwerksbuchstaben besser die USBDLM-Funkion "kein Medium, kein Buchstabe" benutzen.




    Einstellungen



    Die im Folgenden beschriebenen Einstellungen sind in der USBDLM.INI im Abschnitt [Settings] einzutragen.
    In den Beispielen wird immer wieder aufs Neue der Abschnitt [Settings] genannt. Damit ist natürlich der eine gemeinsame Abschnitt gemeint. Es kann nur einen geben...

    Die Einstellungen werden ab V4.2 bis auf wenige Ausnahmen sofort wirksam.


    Laufwerks-Buchstaben beim Start überprüfen

    Die gemachten Laufwerks-Einstellungen werden standardmäßig bei Start des USBDLM-Dienstes überprüft, um auch beim Booten bereits angeschlossene Laufwerke zu erfassen.
    Soll USBDLM das nicht tun:

    [Settings]
    CheckLettersOnStartup=0

    Konflikte mit Netz-Laufwerken können hier nicht ohne weiteres behoben werden, da diese zu diesem Zeitpunkt noch nicht vorhanden sind und USBDLM nicht in die Zukunft blicken kann... Außerdem würde das Anlegen der Netzlaufwerke eh fehlschlagen, wenn der jeweilige Buchstaben schon besetzt ist.
    Künftige Netz-Laufwerke, die hier berücksichtigt werden sollen, müssen deshalb im Abschnitt [NetworkLetters] eingetragen werden.


    Laufwerks-Buchstaben beim Nutzer-Login / Nutzerwechsel überprüfen

    Die konfigurierten Laufwerks-Einstellungen werden standardmäßig beim Wechsel des aktiven Nutzers überprüft, um nutzerabhängige Konfigurationen zu berücksichtigen.
    Soll USBDLM das nicht tun:

    [Settings]
    CheckLettersOnLogon=0

    Nicht verfügbar unter Windows 2000.


    Laufwerks-Buchstaben beim Aufwachen aus Standby und Ruhezustand überprüfen

    Bei manchen Windows-Installationen kommen nach dem Aufwachen aus Standby und Ruhezustand ("Resume") die Laufwerksbuchstaben durcheinander. USBDLM kann dann die Buchstaben überprüfen, normalerweise ist das aber nicht nötig.
    Soll USBDLM beim Resume die Buchstaben überprüfen:

    [Settings]
    CheckLettersOnResume=1

    Nicht verfügbar unter Windows 2000.


    AutoRuns bei Nutzer-Login / Nutzerwechsel ausführen

    Die konfigurierten OnArrival-Ereignisse werden standardmäßig nur beim Anschließen eines Laufwerks bzw. Einlegen eines Datenträgers überprüft und ggf. ausgeführt.
    Soll USBDLM AutoRuns auch beim Login oder Nutzerwechsel ausführen:

    [Settings]
    AutoRunOnLogon=1

    Beim automatischen Logon ist der USBDLM-Dienst möglicherweise noch nicht gestartet, da XP nicht auf den Start aller Dienste wartet - die Illusion vom schnellen Windows-Start hat Vorrang. USBDLM verpaßt so das Logon-Ereignis.
    Deshalb führt USBDLM beim Dienst-Start die AutoRuns dennoch aus, wenn seit dem Systemstart weniger als zwei Minuten vergangen sind und bereits ein Nutzer eingeloggt ist, es sich also offenbar um einen verpaßten Logon handelt.

    Die Zeitspanne innerhalb der USBDLM von einem verpaßten Logon ausgeht kann in Millisekunden konfiguriert werden:

    [Settings]
    AssumeMissedLogonMaxTime=120000

    Nicht verfügbar unter Windows 2000.


    NTFS-Order beim Entfernen des Laufwerks löschen

    Wird in Ordner auf NTFS-Laufwerken gemoutet, werden diese Ordner beim Entfernen des dort bereitgestellten Laufwerks durch USBDLM gelöscht. Wenn USBDLM das nicht tun soll:

    [Settings]
    DeleteMountPointsOnRemoval=0



    Richtlinie "Für Leistung optimieren" für USB-Laufwerke

    Unter XP und höher kann man für USB-Laufwerke zwischen den "Richtlinien" "Für schnelles Entfernen optimieren" und "Für Leistung optimieren" wählen, mit der Behauptung, letztere würde einen Schreibcache aktivieren. Tut es aber nicht, wenn es sich beim Laufwerk um einen USB-Wechseldatenträger handelt - so geben sich fast alle USB-Sticks zu erkennen! "Für Leistung optimieren" aktiviert für Wechseldatenträger lediglich die Möglichkeit, das Laufwerk mit NTFS zu formatieren und dann bekommt man tatsächlich einen Schreibecache - auch auf anderen Rechnern, da unabhängig von der Richtlinie... Es geht allein um die Erlaubnis, mit NTFS zu formatieren.
    Auf FAT-formatieren USB-Festplatten wird tatsächlich ein Schreibcache aktiviert, mit NTFS hat man auch hier in jedem Fall einen Schreibcache.

    USBDLM kann die Richtlinie für alle USB-Laufwerke auf für "Für Leistung optimieren" umstellen:

    [Settings]
    OptimizeUsbDrivesForSpeed=1

    Bei erstmals angeschlossenen Laufwerken klappt das sofort. Vorhandene Laufwerke müssen zweimal neu angeschlossen werden (beim ersten Mal wird der Registry-Eintrag gemacht, beim zweiten Mal wird er wirksam).



    Datenträgerverwaltung automatisch starten für leere Festplatten

    Beim Anschließen einer komplett leeren Festplatte gibt's mangels Partition keinen Laufwerksbuchstaben. Die Platte muß in der Datenträgerverwaltung "initialisiert", partitioniert und formatiert werden.
    USBDLM startet die Datenträgerverwaltung automatisch, wenn eine Festplatte mit komplett leerem Bootsektor angeschlossen wird. Soll es das nicht tun:

    [Settings]
    StartDiskMgmtForUninitializedDrives=0


    Auf externe Mount-Ereignisse reagieren

    Wenn eine andere Software einen Laufwerksbuchstaben ändert, bekommt das ein Dienst wie USBDLM nicht gemeldet. Um sowas dennoch mitzubekommen, erzeugt USBDLM ein unsichtbares Fenster, das diese Benachrichtigung empfängt.
    Unter Vista und unter XP bei mehr als einem angemeldeten Nutzer reicht das nicht, hier startet USBDLM die USBDLM_usr.exe im Kontext des Nutzers zum Empfang der Benachrichtigungen.

    Wenn man das alles nicht braucht:

    [Settings]
    ExternalMountEvents=0

    Am unsichbaren Fenster bzw. der USBDLM_usr.exe hängen auch die OnArrival-Events und Balloontips für gemountete TrueCrypt-Laufwerke - die bekommt USBDLM auch nur so gemeldet. Wenn davon etwas genutzt wird, ist ExternalMountEvents=0 wirkungslos.



    Debug-Infos

    Wenn es Probleme gibt, kann man u.U. anhand von Debug-Ausgaben herausfinden, was schiefläuft.
    Für Ausgaben in die Log-Datei ist WriteLogFile=1 zu setzen. Standardmäßig wird eine _USBDLM.LOG ins Stammverzeichnis des Windows-Laufwerks geschrieben. Mit LogFile=Pfad\Datei läßt sich ein anderes Ziel festlegen.
    Für Live-Debug-Ausgaben, die man mit SysInternals DebugView einfangen kann, ist WriteDebugInfo=1 zu setzen.
    Wie dedailiert die Ausgaben ausfallen, wird über den LogLevel 1 bis 5 gesteuert, wobei ab 4 extrem ins Detail geht. Beispiel:

    [Settings]
    LogLevel=3
    WriteLogFile=1
    LogFile=C:\USBDLM.LOG
    WriteDebugInfo=1

    LogLevel=2 reicht, um zu sehen, wie die Abschnitte aus der INI für ein Laufwerk ausgewählt werden. Mit LogLevel=3 wird's dann unübersichtlich und LogLevel=4 bringt detailierte Ablauf-Infos, die nur dem Autor bei der Fehlersuche helfen.

    Ab V4.2 ist dafür kein Neustart des USBDLM-Dienstes nötig. Die Einstellungen für die Log-Datei werde immer aus der INI gelesen, auch wenn die anderen Einstellungen aus Registry kommen sollten.

    Die USBDLM.LOG wird beim Start in USBDLM_BAK.LOG umbenannt, eine vorhandene USBDLM_BAK.LOG wird gelöscht.








    Balloon-Tips



    Auch wenn man dank USBDLM ja weiß, welchen Buchstaben ein USB-Laufwerk bekommt, ist es ganz nützlich, es nochmal angezeigt zu bekommen...
    Wenn aktiviert zeigt USBDLM ein kleines Hinweis-Fenster mit dem oder den zugeordneten Buchstaben. Der 'BallonTip' verschwindet, wenn man draufklickt oder nach Ablauf der Anzeige-Zeit. Die beträgt 6 Sekunden und kann in Millisekunden eingestellt werden:

    [BalloonTips]
    Enabled=1
    Timeout=6000

    Wird die Maus über dem Balloon-Tip bewegt, beginnt die Zeit von vorn.

    Der Text wird aus wenigen Text-Bausteinen zusammengesetzt. Texte sind in deutsch und einigen anderen Sprachen enthalten und werden abhängig von der in Windows eingestellten Sprache benutzt.

    Man kann sich die Texte auch anpassen, folgende Text-Bausteine sind enthalten:

    [BalloonTips]
    Text_drives=Laufwerke
    Text_partitions=Partitionen
    Text_media=Medium
    Text_mounted_to=bereitgestellt unter
    Text_and=und

    Ergibt dann z.B. für

    - ein Laufwerk mit einem Volume, z.B. ein USB-Stick oder eine Festplatte mit einer Partition
         bereitgestellt unter X:\

    - eine Festplatte mit mehreren Partitionen
         2 Partitionen bereitgestellt unter X:\ und Y:\

    - ein Gerät mit mehreren Laufwerken, z.B. ein Multilslot-Cardreader
         3 Laufwerke bereitgestellt unter X:\, Y:\ und Z:\

    - ein eingelegtes Medium, z.B. eine Flashkarte
         Medium bereitgestellt unter X:\

    Unicode wird nicht unterstützt. Die maximale Länge pro Text-Baustein ist 47 Zeichen.

    Wenn sich in einer Fremdsprache für "bereitgestellt unter" die Singular- und Plural-Varianten unterscheiden, kann für Plural der Eintrag
    Text_mounted_to_plr konfiguriert werden.


    Viele verschiedene Varianten sind hier beim Zusammenbasteln der Balloontips berücksichtigt. Daher sind frei konfigurierbare Balloon-Texte nicht mit vertretbarem Aufwand machbar. Für einfache Laufwerke mit einem Buchstaben ist es aber kein Problem:

    Beispiel für Laufwerksbuchstabe, Volume-Label ("Datenträgerbezeichnung") und Dateisystem:

    Text_singledrive=bereitgestellt unter  %Root%    "%VolumeLabel%"  [%FsName%]

    ergibt z.B.
    bereitgestellt unter X:\   "Backup"  [NTFS]

    %Root%, "%VolumeLabel%" und %FsName% sind USBDLM-Variablen.

    Um  "%VolumeLabel%"  [%FsName%] im oberen Beispiel rechtsbündig zu bekommen, kann ein "Zentrum" definiert werden. Der Platzhalter dafür ist " !! ". Der wird zunächst durch sechs Leerzeichen ersetzt. Ergibt sich aus der Titelzeile des Balloons ein breiterer Balloon und somit mehr Platz, werden es entsprechend mehr. Soll etwas Abstand von rechts eingehalten werden, funktionieren angehängte Leerzeichen nicht - die werden beim Einlesen der INI-Datei ignoriert. Man nehme stattdessen Unterstriche, die werden am Anfang und am Ende durch Leerzeichen ersetzt.

    Beispiel:
    Text_singledrive=bereitgestellt unter  %Root%  !!   "%VolumeLabel%"  [%FsName%]____


    Für neu eingelegte CDs/DVDs gibt es die Einstellung Text_singlecddvd und für Wechseldatenträger Text_singlemedia.
    Ein Balloontip wird aber nur dann angezeigt, wenn beim Einlegen ein Mountpunkt zugeordnet wird, also NoMediaNoLetter für das Laufwerk aktiv ist.



    Wenn NoMediaNoLetter=1 konfiguriert ist, kann ein Balloontip schonmal so aussehen:

    MultiReader USB device

    bereitgestellt unter ---, ---, --- und ---

    Auf den ersten Blick überflüssig, informiert es darüber, dass der Reader vier Laufwerke beherbergt und aus gutem Grund kein Laufwerksbuchstabe zugeordnet wurde.




    Meherere Mountpunkte

    Ab V4.3 kann USBDLM mehere Mountpunkte zuordnen. Standardmäßig werden in Balloontips maximal zwei pro Volume angezeigt. Wer mehr braucht:

    [BalloonTips]
    MaxMountPointsToShow=3

    Oder wer nur den ersten sehen will:

    [BalloonTips]
    MaxMountPointsToShow=1

    Standardmäßig wird der Laufwerksbuchstabe (falls vorhanden) als erster gezeigt. Wer es umgekehrt haben will:

    [BalloonTips]
    MountPointsReverse=1



    Zeichensatz

    Ist es nicht mir dem Windows Standard-Zeichensatz getan, kann ein Zeichensatz angegeben werden. Für Russisch z.B.

    Text_charset=204

    Weitere Werte aus der Mircosoft WinGDI.h:

    GREEK_CHARSET           161
    TURKISH_CHARSET         162
    HEBREW_CHARSET          177
    ARABIC_CHARSET          178
    EASTEUROPE_CHARSET      238
    RUSSIAN_CHARSET         204
    BALTIC_CHARSET          186

    Ab Vista mit aktivem "Design" hat das keine Wirkung, es wird der Standardzeichensatz benutzt.


    "Rechts-nach-links"-Schriften werden derzeit nicht unterstützt.






    Einstellungen für Balloon-Tips



    Auf das letzte Laufwerk warten

    Wenn ein Gerät mit mehreren Laufwerken angeschlossen wird, z.B. eine Festplatte mit mehreren Partitionen oder ein Multislot-Cardreader, kann USBDLM mit dem Ballon-Tip warten, bis alle Laufwerke bereit sind. Normalerweise wird der Balloon-Tip für das erste Laufwerk angezeigt und dann für jedes weitere aktualisiert.

    [BalloonTips]
    WaitForLastVolume=1


    Windows-Balloon-Tips bei Bedarf unterdrücken

    Wenn ein Laufwerk zum ersten mal angeschlossen wird, zeigt Windows mehr oder weniger hilfreiche Balloon-Tips. USBDLM räumt die bei Bedarf aus dem Weg. Wenn es das nicht tun soll:

    [BalloonTips]
    SuppressWindowsBalloons=0


    Laufwerksgröße anzeigen

    [BalloonTips]
    ShowSize=1

    So wird hinter dem Geräte-Namen noch die Größe des Laufwerks angezeigt, z.B.

    Corsair Flash Voyager USB device - 8 GB


    Laufwerksgröße runden

    Bei Größen zwischen 8 und 1000 MB kann USBDLM die Größe so runden, dass immer gängige Größen wie 256 und 512 MB statt krumme Werte wie 262 und 509 MB angezeigt werden.

    [BalloonTips]
    RoundSize=1


    Keine Balloontips für TrueCrypt-Volumes

    Ab V4.3 zeigt USBDLM auch BalloonTips für gemountete TrueCrypt-Volumes. Soll es das nicht tun: 

    [BalloonTips]
    ShowTrueCrypt=0


    Balloontips für U3-Sticks

    Standardmäßig zeigt USBDLM im Balloontip nur das Daten-Laufwerk an, da das U3-CDROM ja nur das Autorun-Vehikel ist. Will man dennoch beide Laufwerke im Balloontip angezeigt haben:

    [BalloonTips]
    ShowU3CDROM=1

    Das Daten-Laufwerk wird als erstes angezeigt.


    Keine Balloontips für bestimmte Laufwerke

    Immer mehr in Mode kommen USB-Geräte wie Drucker, WebCams oder WLAN-Sticks mit einem "Selfinstaller". Das ist ein gefälschtes CD-ROM-Laufwerk über das automatisch Treiber installiert werden sollen. Meist deaktivieren sich diese CD-ROMs ein paar Minuten nach dem Anschließen. Das ist bestens geeignet, um auf Rechnern ohne USBDLM die Laufwerksbuchstaben durcheinanderzubringen.
    Damit USBDLM dafür keinen Balloontip zeigt, muß man das anhand dessen Hardware-Geräte-ID oder des "Friendly Name" sperren. Beispiel:

    [BalloonTipsExclude]
    DeviceID1=USB\VID_057C&PID_62FF
    DeviceID2=selfinstall

    Die ID muß mindestens acht Zeichen lang sein. Man holt sie sich mit dem mitgelieferten ListUsbDrives, siehe Buchstaben abh. von der Geräte-ID.



    Aktionen beim Klick auf den Balloontip

    Analog zu AutoRun können Ereignisse bei Links-, Rechts- und Mittel-Klick definiert werden.

    ;Explorer bei Links-Klick
    [OnBalloonClick1]
    open=explorer %drive%

    ;Foto-Software bei Rechts-Klick
    [OnBalloonRClick1]
    open=c:\programme\fotosoft\fotosoft.exe %drive%

    Es können mehrere Ereignisse abhänging von Laufwerks-Eigenschaften definiert werden, genau wie für [AutoRun] beschrieben.

    Wenn im Balloontip mehr als ein Laufwerk angezeigt wird, gilt das Ereignis nur für das erste Laufwerk mit einem Laufwerksbuchstaben.

    explorer /e (öffnet ein Explorer-Fenster mit Laufwerks-Baum) sollte hier nicht benutzt werden, da der Explorer ca. 4 Sekunden braucht, um ein neues Laufwerk in den Laufwerks-Baum einzutragen. Wenn man vorher auf ein neues Laufwerk zugreift, bekommt man u.U. einen leeren Eintrag im Laufwerksbaum.














    Umstieg von V3.x


  • Statt für jedes Kriterium einen eigenen Abschnittstyp wird jetzt nur noch ein Typ benutzt, [DriveLettersX]. In jedem Abschnitt können alle unterstützten Kriterien konfiguriert werden, so wie das schon von z.B. [DriveLettersBySize] mit MinSizeMB=xxxx bekannt ist.
  • Die Reihenfolge der Auswertung ist nicht mehr fest vorgegeben, sie jetzt hängt allein von den Abschnittsnummern ab
  • USBDLM.INI auf dem Laufwerk gibt's so nicht mehr, kann aber leicht nachgebildet werden, siehe Konfiguration. Der Vorteil ist, dass man die Funktion nicht sperren muß, wenn sie nicht gewollt ist und das man für die Priorität freie Hand hat.
  • RunOnArrival gibts nicht mehr, kann aber per AutoRun nachgebaut werden
  • [DriveLettersMultiSlotCardReader] gibts nicht mehr, die werden jetzt wie jedes andere USB-Wechsellaufwerk behandelt. Eine Sonderbehandlung einschließlich der BaseFolder-Funktion kann aber leicht über den Geräte-Typ nachgebildet werden
  • Alle Abschnitte gelten nur für USB-Laufwerke, für andere Typen muß ein Bus-Typ konfiguriert werden.


    Beispiele für die Umstellung

    ALT (V3.x)                             Neu (ab V4.0)
    ----------------------------------------------------------------------------

    USBDLM.INI auf dem Laufwerk            [DriveLetters1]
                                           FileExists=%drive%\usbdlm.ini
                                           Letters=%drive%\usbdlm.ini


    [MultiSlotCardReaders]                 [DriveLetters5]
    BaseFolder=C:\CardReader               DeviceType=MSCR
                                           Letter1=C:\CardReader\%DevName%

    [DriveLettersSize1]                    [DriveLetters10]
    MinSizeMB=10000                        MinVolumeSize=10GB
    Letter1=X                              Letter1=X

    [DriveLettersFirewire]                 [DriveLetters20]
    Letter1=X                              BusType=Firewire
                                           Letter1=X

    [DriveLettersCDROM]                    [DriveLetters25]
    Letter1=X                              DriveType=CDROM
                                           Letter1=X

    [DriveLettersU3AutoRun]                [DriveLetters30]
    Letter1=X                              DriveType=CDROM
                                           DeviceType=U3
                                           Letter1=X

    ;ein USB-Laufwerk:
    [DriveLettersDeviceID1]                [DriveLetters40]
    DeviceID1=Corsair Flash Voyager        DeviceID1=Corsair Flash Voyager                                       
    Letter1=X                              Letter1=X

    ;ein ATA-Laufwerk:
    [DriveLettersDeviceID1]                [DriveLetters45]
    DeviceID1=IC35L120AVV207-0             DeviceID1=IC35L120AVV207-0
    Letter1=X                              BusType=ATA
                                           Letter1=X

    [DriveLettersUsbPort1]                 [DriveLetters50]
    PortName=3-1-1                         PortName=3-1-1
    Letter1=X                              Letter1=X


    [Settings]                             [BalloonTips]
    ShowBalloonTips                        Enabled
    BalloonTipTimeout                      Timeout
    ShowSizeInBalloons                     ShowSize
    BalloonWaitForLastVolume               WaitForLastVolume

    [NoBallonsFor]                         [BalloonTipsExclude]

    [Settings]                             [Settings]
    AutoRunEnabled=1                       AutoRunInf=1


    EjectServer                            discontinued





    Reservierte Buchstaben



    Alle im Abschnitt [NetworkLetters] konfigurierten Buchstaben sind für die Benutzung gesperrt, das heißt, wenn Windows einen dieser Buchstaben einem Laufwerk zuordnet, wird USBDLM eingreifen und einen anderen Buchstaben zuordnen.

    Hier sollten nur Laufwerksbuchstaben von Netz- und Subst-Laufwerken eingetragen werden, damit USBDLM sie schon beim Systemstart berücksichtigen kann. Außerdem können Buchstaben konfiguriert werden, die nicht über die normalen Mount-Mechanismen zugeordnet werden, also nicht in der Datenträgerveraltung erscheinen, z.B. TrueCrypt-Laufwerke.
    Niemals Buchstaben von lokalen Laufwerken konfigurieren - USBDLM würde sie ummounten, Hauptsache weg von den NetworkLetters!

    Bis V4.2 hieß der Abschnitt [ExcludedLetters], was so auch mit V4.3 funktionert.
    Der Abschnitt wurde umbenannt, weil viele Nutzer hier die Buchstaben ihrer internen Laufwerke konfiguriert haben, was falsch und gefährlich ist.

    Man kann auf  [NetworkLetters] auch verzichten, wenn in den DriveLetters-Abschnitten ausreichend Buchstaben konfiguriert sind, so dass die anderen Buchstaben von selbst frei bleiben.

    Die Liste überstimmt auch die Konfiguration von Buchstaben in externen INI-Dateien, die per Letters=%drive%\usbdlm.ini eingelesen werden.

    Folgendes Beispiel sperrt F und G für lokale Laufwerke:

    [NetworkLetters]
    Letter1=F
    Letter2=G
    Letter3=
      .
      .
    Letter26=


    In diesem Abschnitt sind nur Buchstaben, also keine Ordner zulässig! Die Buchstaben werden von 1 bis 26 eingelesen.

    Auch hier ist die Kurznotation in einem Wert 'Letters' möglich:

    [NetworkLetters]
    Letters=F,G,X-Z

    Das würde F, G, X, Y und Z sperren.




    Neue Standard-Buchstaben für USB-Sticks und Festplatten



    In den Abschnitten [DriveLetters] und [DriveLetters1] bis [DriveLetters99]werden neue Standard-Buchstaben für USB-Festplatten und Sticks festgelegt.

    Beispiel:

    [DriveLetters]
    Letter1=U
    Letter2=V
    Letter3=W

    Oder als Liste:

    [DriveLetters]
    Letters=U,V,W

    oder ganz kurz:

    [DriveLetters]
    Letters=UVW

    oder nur ein Buchstabe:

    [DriveLetters]
    Letter=U


    Da im Abschnitt keine Kriterien angegeben sind, kommen die Standard-Kriterien zum Zuge, das sind

    BusType=USB

    DriveType1=REMOVABLE
    DriveType2=FIXED

    Der Abschnitt ist also für USB-Wechseldatenträger und USB-Festplatten zutreffend.


    Die Laufwerksbuchstaben können auch aus einer externen INI-Datei gelesen werden, z.B. auf dem angeschlossenen Laufwerk:

    [DriveLetters]
    Letters=%drive%\usbdlm.ini


    Man kann auch beides kombinieren - die externe Datei hat im Beispiel Vorrang, weil Letters vor Letter1 eingelesen wird:

    [DriveLetters]
    Letters=%drive%\usbdlm.ini
    Letter1=U
    Letter2=V

    In der externen INI-Datei ist nur ein einfacher Abschnitt [DriveLetters] ohne Kriterien zulässig, wie der im ersten Beispiel.

    Soll ein Abschnitt nur zuständig sein, wenn die USBDLM.INI auf dem Laufwerk vorhanden ist, brauchts ein eintsprechendes Kriterium:

    [DriveLetters10]
    FileExists=%drive%\usbdlm.ini
    Letters=%drive%\usbdlm.ini


    Priorität

    Zuerst kommt Letter zum Zuge, dann Letters und zuletzt Letter1 bis Letter9.







    Kein Medium, kein Buchstabe



    Der typische 20 in 1 Cardreader verbrät für jeden Karten-Slot einen kostbaren Laufwerks-Buchstaben - ob man eine Karte dafür besitzt oder nicht. Und man weiß eh nie, welcher Buchstabe zu welchem Slot gehört. Also weg mit den Buchstaben und genau dann einen zuordnen, wenn ein Medium eingelegt wird:

    [Settings]
    NoMediaNoLetter=1

    Um wirksam zu werden, muß das betreffende Gerät neu angeschlossen oder der USBDLM-Dienst neu gestartet werden.

    Windows 2000 unterstützt leider die notwendigen Benachrichtigungen nicht. USBDLM muß hier zyklisch abfragen, ob ein Medium eingelegt ist, was etwas CPU-Last generiert.


    Unterstützt werden standardmäßig nur Wechseldatenträger, aber keine Floppys oder CD-ROMs. Außerdem sind Geräte ausgeschlossen, die "Iomega" und "ZIP" oder "JAZ" enthalten, da für solche floppy-artigen Laufwerke NoMediaNoLetter nicht angemessen wäre.

    NoMediaNoLetter=0 -> kein Laufwerk
    NoMediaNoLetter=1 -> nur Multislot-Cardreader
    NoMediaNoLetter=2 -> auch Singleslot-Cardreader
    NoMediaNoLetter=3 -> alle Wechseldatenträger

    Singleslot-Cardreader lassen sich nicht sicher erkennen. USBDLM versucht es anhand einiger charakteristischer Zeichen im Gerätenamen, wie "card", "reader" und einigen anderen. Wenn ein Kartenleser nicht als solcher erkannt wird, entweder NoMediaNoLetter=3 setzten oder einen Abschnitt [NoMediaNoLetterInclude] nutzen, siehe unten.


    Buchstaben kommen immer wieder

    Tauchen die Buchstaben hartnäckig immer wieder auf, ist eine andere Software am Werk, die die Buchstaben bei passender Gelegenheit überprüft und ggf. zuordnet.
    Bekannt dafür ist das U3 Launchpad auf U3-Sticks (die LaunchU3.exe auf dem Pseudo-CDROM).
    Eine weitere Software die grundlos Laufwerksbuchtaben zuordnet ist das "Secure Storage Device SDK" (SSDService.exe) von MXI.

    Mit dem SysInternals ProcessMonitor kann man ermitteln, welcher Prozess Laufwerksbuchstaben zuordnet:
    http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

    Folgenden Filter sollte man setzten:

    Path     contains     DosDevices

    Dann in Werkzeugleite rechts den Registry-Button gedrückt lassen, die anderen drei kann man abwählen.
    Wenn die Buchstaben dann wieder aufgetaucht sind, sollten kurze Zeit später Zugriffe protokolliert worden sein.


    Falls das U3-Launchpad schuld ist, bieten sich folgende Workarounds an:

    Workaround 1: U3 lahmlegen, indem man dem gefälschten CDROM den Buchstaben wegnimmt:

    [DriveLetters10]
    DriveType=CDROM
    DeviceType=U3
    Letter=-


    Workaround 2: Keine Admin-Rechte für das U3-Launchpad

    Ohne Admin-Rechte kann es keine Laufwerksbuchstaben ändern. Entweder als "Eingeschränkter Nutzer" arbeiten, oder das U3-Launchpad ohne Admin-Rechte starten - das kann USBDLM erledigen:

    [OnArrival]
    DriveType=CDROM
    FileExists=%drive%\u3launch.exe
    open=%drive%\u3launch.exe
    restricted=1

    Oder falls lokal installiert, aus dem Windows Autostart entfernen und durch USBDLM starten lassen:

    [OnUserLogon]
    open="%ALLUSERSPROFILE%\Anwendungsdaten\U3\U3Launcher\LaunchU3.exe"
    restricted=1

    Die aktuelle Version 1.6 des U3-Launchpads funktioniert meist nicht ohne Admin-Rechte und kommt mit einer unsinnigen Fehlermeldung. Hier hilft es manchmal, alle USB-Wechseldatenträger zu entfernen und das U3-Launchpad mit Admin-Rechten auszuführen. Es kann dann seine merkwürdige Installations-Orgie durchziehen und ab dann hoffentlich auch ohne Admin-Rechte arbeiten.
    Den Daten-Teil sollte man übrigens nicht auf A:, B: oder gar einen NTFS-Ordner legen, damit ist U3-Launchpad auch überfordert.


    Workaround 3: USBDLM dagegen "kämpfen" lassen

    Eigentlich hatte ich fest damit gerechnet, dass das unsinnige Verhalten der U3-Software irgendwann behoben wird, aber da es die U3-Entwickler auch nach drei Jahren offenbar nicht in der Lage sind, das eigene Laufwerk von anderen USB-Wechseldatenträgern zu unterscheiden, muß USBDLM es eben richten:

    [Settings]
    FightU3Bug=1

    Wenn Laufwerkbuchstaben von USB-Wechseldatenträgern unerwartet zugeordnet werden und innerhalb der vergangenen 15 Sekunden ein U3-CDROM angeschlossen wurde, entfernt USBDLM die Buchstaben sofort wieder.
    Im Windows-Explorer bleibt dann oft je eine Laufwerks-Leiche mit rotem Fragezeichen zurück. Mit F5 aktualisieren schafft Abhilfe.

    Das U3 Launchpad kann sich auch auf das Systemlaufwerk kopieren (unter "All Users\U3") und in den Autostart eintragen. Bei jedem Anschließen eines USB-Wechseldatenträgers ordnet es einen Laufwerksbuchstaben zu, falls nicht vorhanden. Hier hilft dann nur:

    [Settings]
    ForceNoMediaNoLetter=1

    Eine andere Software die Laufwerksbuchstaben zuordnet ist "Secure Storage Device SDK" (SSDService.exe) von MXI.


    Geräte von NoMediaNoLetter ausschließen

    Mit manchen Geräten gibt es Probleme: USBDLM wird dann mit Nachrichten geflutet oder es nimmt einem Gerät den Buchstaben weg, weil es zunächst wie ohne eingelegten Datenträger erscheint.
    Anhand der Geräte-ID kann man Geräte ausschließen.

    Beispiel zum Ausschließen des Apple iPod:

    [NoMediaNoLetterExclude]
    DeviceID1=ven_apple&prod_ipod

    Das ist bereits fest eingebaut, weil der iPod ein erprobtes Problem-Gerät ist...

    DeviceID1 bis DeviceID9 und DeviceID können konfiguriert werden.



    NoMediaNoLetter für bestimmte Geräte erzwingen

    Beispiel für ein altes Iomega IDE ZIP-Drive und ein ATAPI-CDROM:

    [NoMediaNoLetterInclude]
    DeviceID1=IDE\DISKIOMEGA_ZIP_100
    DeviceID2=IDE\CDROMHL-DT-ST_DVDRRW_GWA-4161B

    Beim Einlegen eines Mediums ordnet USBDLM dann den ersten freien Buchstaben zu. Soll es ein bestimmter sein, muß man ihn entsprechend konfigurieren:

    [DriveLetters10]
    DeviceID=IDE\DISKIOMEGA_ZIP_100
    Letter=Z

    [DriveLetters12]
    DeviceID=IDE\CDROMHL-DT-ST_DVDRRW_GWA-4161B
    Letter=L









    LW-Buchstaben abhängig von bestimmten Kriterien



    Ab V4.0 kann man die Buchstaben abhängig von einer Vielzahl an Kriterien vergeben. 

    Man braucht dann mehrere Abschitte [DriveLettersX], in denen jeweils andere Kriteriten definiert sind. 
    Die Abschnitte werden von Nummer 1 an aufwärts bis 99 eingelesen. Zum Schluß noch der Abschnitt [DriveLetters] (ohne Nummer).

    Der erste Abschnitt mit passenden Kriterien wird verwendet (und nur dieser). Das bedeutet, dass man immer vom speziellen Fall aufwärts zu den allgemeineren konfiguriert. 
    Man benutzt am besten Abschnitts-Nummern in 10er-Schritten - dann kann man problemlos mal einen einfügen ohne neu numerieren zu müssen.

    Standard-Kriterien sind:
    BusType=USB
    und
    DriveType1=REMOVABLE
    DriveType2=FIXED

    Das heißt, wenn keine Kriterien angegeben werden, ist ein Abschnitt für alle USB-Sticks und USB-Festplatten zutreffend, was dem Verhalten von USBDLM bis V3.x entspricht. Abweichend von V3.x sind Multislot-Cardreader nicht mehr ausgenommen.

    Gibt man einen anderen BusType bzw. DriveType an, wird die jeweilige Vorgabe natürlich außer Kraft gesetzt.

    Untypisches Beipiel zum Verdeutlichen der Funktionsweise, Kriterien in grün, Ziel-Buchstaben in violett:

    [DriveLetters10]
    DeviceID1=USB\VID_067B&PID_2517
    DeviceID2=USB\VID_1234&PID_5678
    Letter1=X
    Letter2=Y

    Dieser Abschnitt wird benutzt, wenn ein Laufwerk mit der Geräte-ID USB\VID_067B&PID_2517 oder USB\VID_1234&PID_5678 angeschlossen wurde. Dem Laufwerk wird dann X: zugeordnet falls frei, sonst Y:. Sind beide Buchstaben belegt, wird der erste freie Buchstabe zugeordnet. Soll in diesem Fall kein Buchstabe zugeordnet werden, konfiguriert man noch Letter3=-

    Hier besteht kein Zusammenhang zwischen den Nummern!

    Typisches Beispiel um o.g. Laufwerke auf je einem Buchstaben zu haben:

    [DriveLetters10]
    DeviceID=USB\VID_067B&PID_2517
    Letter=X

    [DriveLetters20]
    DeviceID=USB\VID_1234&PID_5678
    Letter=Y

    Bei nur einem Kriterium und einem Buchstaben kann man die Nummern weglassen.


    Weitere Beipiele:

    1. FireWire-Laufwerke auf F, USB-Laufwerke ab 10GB auf U, alle anderen USB-Sticks- und Platten auf W oder Z:

    ;FireWire auf F:
    [DriveLetters10]
    BusType=FireWire
    Letter1=F

    ;USB >10GB auf U:
    [DriveLetters20]
    MinDiskSize=10GB
    Letter1=U

    ;alle übrigen USB-Laufwerke auf W: oder Z:
    [DriveLetters]
    Letter1=W
    Letter2=Z


    2. USB-Multislot-Cardreader auf L, M, N, O; alle anderen USB-Sticks- und Platten auf W oder Z:

    ;MultiSlotCardReader auf L:, M:, N: und O:
    [DriveLetters10]
    DeviceType=MSCR
    Letters=L,M,N,O

    ;alle übrigen USB-Laufwerke auf W: oder Z:
    [DriveLetters]
    Letters=W,Z


    Es können auch mehrere Kriterien gleichen Typs - dann numeriert - angegeben werden. Davon muß dann eines passen.
    Auch mehrere Kriterien verschiedenen Typs sind möglich - dann muß ein Eintrag jeden Typs passen.

    Bsp: USB- und FireWire-Laufwerke ab 10GB auf F:

    [DriveLetters10]
    BusType1=USB
    BusType2=FireWire
    MinDiskSize=10GB
    Letter1=F

    Bsp: CF-Karten im PCMCIA-Slot auf P:

    [DriveLetters10]
    BusType=ATA
    DeviceID=PCI\VEN_1217&DEV_7135
    Letter1=P

    Die DeviceID zeigt ListUsbDrives (bei ATA und ATAPI ist es die "Ctrl2 Dev ID"). Da eine DeviceID ein Gerät eindeutig definiert (wenn man nicht zu sehr kürzt), kann der BusType ab V4.3 weggelassen werden, wenn eine DeviceID konfiguriert ist.



    Sowas funktioniert nicht:

    ;USB-Festplatten auf K oder L:
    [DriveLetters20]
    DriveType=fixed
    Letters=K,L

    ;eine bestimmte USB-Festplatte auf I:
    [DriveLetters30]
    DriveType=fixed
    DeviceID1=USBSTOR\DISK&VEN_WDC_WD20&PROD_00BB-00GUA0
    Letters=I

    Warum? Abschnitt 20 "fängt" alle USB-Platten ein, Abschnitt 30 kommt deshalb nie zum Zuge.
    Deshalb immer vom speziellen Fall aufwärts zu den allgemeineren konfigurieren. 



    Die verschiedenen Kriterien sind in den folgenden Abschnitten beschrieben, hier eine Übersicht:
  • MinVolumeSize (*)        Mindestgröße des Volumes
  • MaxVolumeSize (*)        Maximalgröße des Volumes
  • MinDriveSize             Mindestgröße des gesamten Laufwerks
  • MaxDriveSize             Maximalgröße des gesamten Laufwerks
  • DeviceID                 Geräte-ID des Volumes, des Laufwerks, des Controllers oder der "Friendly Name"
  • PortName (**)            Name des USB-Ports, z.B. 3-1
  • VolumeLabel (*)          Datenträgerbezeichnung
  • VolumeSerial (*)         Seriennummer des Volumes
  • DriveType                z.B. REMOVABLE, FIXED, CDROM, FLOPPY, RAMDISK
  • DeviceType               z.B. MSCR, TrueCrypt, BitLocker
  • BusType                  z.B. USB, FireWire, ATA, ATAPI, SCSI
  • PartitionNumber          Partitionsnummer
  • FileExists (*)           Vorhandensein einer Datei
  • FileNotExists (*)        Nichtvorhandensein einer Datei
  • DirExists (*)            Vorhandensein eines Verzeichnisses
  • DirNotExists (*)         Nichtvorhandensein eines Verzeichnisses
  • UserName                 Nutzername des angemeldeten Nutzers
  • UserGroup                Nutzergruppenname des angemeldeten Nutzers
  • UserIsAdmin              1 wenn Nutzer ein Admin ist, sonst 0

    (*) kann zu Verzögerungen führen oder ganz fehlschlagen, da dafür das Dateisystem fertig eingebunden sein muß; normalerweise problemlos
    (**) kann ab V4.4 bedenkenlos genutzt werden, keine Verzögerungen mehr

    Hinweis: Frei erfundene Kriterien funktionieren nicht.







    Buchstaben abhängig von der Laufwerks-Größe



    Die Laufwerks-Größe kann sowohl auf den gesamten Datenträger (die Disk) als auch auf das einzelne Laufwerk (das Volume) bezogen werden.
    Die Größe wird sinnvollerweise mit Einheit wie KB, MB oder GB versehen, sonst sind Bytes gemeint!
    Die Einheiten verstehen sich 10 hoch n Bytes - ein MB sind also 1.000.000 Bytes
    Eine 40GB-Platte hat typischerweise ein Größe von knapp über 40GB, eine einzelne Partition darauf aber meist nur knapp unter 40GB!
    Wenn die Grenze z.B. bei 40GB liegen soll, also besser etwas weniger angeben, z.B. 39GB.
    Nur ganze Zahlen sind zulässig.

    Es kann jeweils eine maximale oder eine minimale Größe angegeben werden, verfügbare Einträge sind also:
    MinVolumeSize
    MinDiskSize
    MaxVolumeSize
    MaxDiskSize


    Beispiel:

    ;USB-Datenträger ab einschl. 40GB auf U:
    [DriveLetters10]
    MinDiskSize=39GB
    Letter1=U

    ;USB-Partition ab einschl. 10GB auf X:
    [DriveLetters20]
    MinVolumeSize=9GB
    Letter1=X



    Für MinVolumeSize und MaxVolumeSize muß das Dateisystem gemountet sein - das kann zu Verzögerungen führen oder auch ganz fehlschlagen.




    LW-Buchstaben abhängig von der Geräte-ID



    Das Vorgeben von Buchstaben abhängig von der Geräte-ID ist etwas unhandlich zu konfigurieren.
    Im folgenden wird Geräte-ID "Device-ID" genannt. Genaugenommen ist es die "Instance ID", auf Microsoft-Deutsch "Geräteinstanzkennung".

    Beispiel:

    [DriveLetters10]
    DeviceID1=USB\VID_067B&PID_2517
    DeviceID2=USB\VID_1234&PID_5678
    Letter1=U

    [DriveLetters20]
    DeviceID1=USB\VID_9876&PID_5432
    Letter1=X


    Auch der "Friendly Name" - wie von ListUsbDrives gezeigt - kann benutzt werden. Hier muß ein Leerzeichen enthalten sein, damit USBDLM sieht, dass es ein "Friendly Name" ist. Dieser wird nur bei Bedarf ermittelt.
    Es kommt auch vereinzelt vor, dass das Ermitteln des "Friendly Name" fehlschlägt - eine 'richtige' Device-ID ist zuverlässiger und schneller.

    [DriveLetters10]
    DeviceID1=Corsair Flash Voyager
    Letter1=V


    Wenn eine Device-ID konfiguriert ist, sind der Standard BusType=USB und die Standard-Laufwerkstypen REMOVABLE und FIXED außer Kraft gesetzt, da eine Geräte-ID ausreichend eindeutig ist. Bei einem U3-Stick ist die Geräte-ID des USB-Gerätes ("Ctrl DevID") aber ungeeignet, da diese sowohl für das gefälschte CDROM-Laufwerk als auch für den Wechseldatenträger gilt. Hier besser die "Drive DevID" nutzen.

    Die Device-ID muß man sich erstmal ermitteln. Dazu das betreffende Laufwerk anschließen und ListUsbDrives_To_Notepad starten. Als Device-ID kann die 'Drive DevID', 'Ctrl DevID' oder der 'Friendly Name'  verwendet werden, bei ATA- und ATAPI-Laufwerken geht zusätzlich die 'Ctrl2 DevID'.

    Der String-Vergleich erfolgt unabhängig von Groß-/Kleinschreibung. Ein beliebiger Teil des Strings kann eine Übereinstimmung ergeben. Es müssen mindestens 8 Zeichen konfiguriert werden.
    Ab V4.2 können alternativ Wildcards benutzt werden.

    'Drive DevID' ist die Geräte-ID des Laufwerks, 'Ctrl DevID' die des im Gerätebaum eine Ebene höher liegenden 'Controllers' (bei USB-Laufwerken ist das die USB-Bridge, bei ATA-Laufwerken ein logischer IDE-Kanal), und die 'Ctrl2 DevID' noch eine Ebene darüber (bei USB-Laufwerken ein USB-Hub oder Root-Hub, bei ATA-Laufwerken der IDE-Controller).

    MountPoint     = U:\
    Volume Label   = Voyager_2GB
    Size           = 2.0 GB (NTFS)
    Volume Name    = \\?\Volume{d9e95680-6d80-11db-afb8-000102b35cc3}\
    Drive DevID    = USBSTOR\DISK&VEN_CORSAIR&PROD_FLASH_VOYAGER&REV_1.00\..
    Ctrl  DevID    = USB\VID_067B&PID_2517\6&12115AD4&2&1
    Volume DevName = \Device\Harddisk4\DP(1)0-0+25
    Disk DevName   = \Device\Harddisk4\DR39
    Device Number  = 4
    Friendly Name  = Corsair Flash Voyager
    USB Version    = 2.0 (high speed)
    USB Serial     = ---
    USB Port Name  = 5-1-1


    Alle numerierten Einträge sind wie immer von 1 bis 9 möglich. 

    Für eine große Zahl Device-IDs kann auf eine externe Datei verwiesen werden - das spart die lästige Nummerierung:

    [DriveLetters10]
    DeviceIDs=C:\USBDLM_DeviceIDs.txt
    Letter1=V

    In der Text-Datei steht dann je Zeile eine Geräte-ID, ohne Einleitung, ohne Nummer.
    Leerzeilen sind erlaubt, Zeilen die mit einem Semikolon beginnen, sind Kommentare.
    Beispiel:

    ;Stick vom Admin (der Dativ ist dem Genitiv sein Tod)
    USB\VID_067B&PID_2517
    USB\VID_1234&PID_56789

    ;Sticks vom Chef
    USB\VID_9876&PID_5432
    USB\VID_4567&PID_4321

    ;Sticks vom Fußvolk
    USB\VID_3456&PID_3543
    USB\VID_3456&PID_1432



    Nutzung der USB-Seriennummer

    Im oben genannten Beispiel ist die Device-ID 'USB\VID_067B&PID_2517\6&12115AD4&2&1'. In den letzten Teil (hinter dem letzten Schrägstrich) schreibt Windows die USB-Seriennummer. Dummerweise ist der hier verwendete USB-Stick 'Corsair Flash Voyager 2GB' (altes Modell) einer, bei dem die USB-Seriennummer eingespart wurde. Deshalb wurde dieser Teil der Device-ID von Windows generiert, was am mehrfachen Vorkommen des & Zeichens zu erkennen ist. An jedem USB-Port wird eine neue Nummer generiert.
    Soll so ein Gerät unter Verwendung der Geräte-ID als Kriterium an jedem USB-Port den selben Buchstaben bekommen, muß der letzte Teil der Geräte-ID weggelassen werden, also z.B. so:
    DeviceID1=USB\VID_067B&PID_2517

    Bei Geräten, die eine Seriennummer haben, kann man den ganzen String verwenden oder einfach nur die Seriennummer, da sie in der Geräte-ID vorkommt:

    [DriveLetters10]
    DeviceID1=1234567890ABCD
    Letter1=V

    Wenn man dann noch Letter1=-- für alle anderen USB-Laufwerke ( [DriveLetters] ) konfiguriert, hat man den einzigen funktionierenden USB-Stick und ist plötzlich ganz wichtig.
    USB-Floppys und CD-ROMs sollten dann auch gesperrt werden:

    [DriveLetters]
    DriveType1=floppy
    DriveType2=cdrom
    DriveType3=removable
    DriveType4=fixed
    DriveType5=unknown
    Letter=--

    Oder kurz:

    [DriveLetters]
    DriveType=any
    Letter=--


    Nicht selten sind die Seriennummern aller Exemplare identsch - ein Verstoß gegen die USB-Massenspeicher-Spezifikation (oder eine sehr eigenwillige Interpretation), siehe auch hier:
    http://www.uwe-sieber.de/usbtrouble.html







    LW-Buchstaben abhängig vom USB-Port



    USB-Portnamen zu ermitteln ist recht aufwendig und kann bei einer großen Anzahl von USB-Ports durchaus ein bis zwei Sekunden dauern und erzeugt Last im USB-Subsystem.
    Ab V4.4 kann der USB-Portname bedenkenlos benutzt werden - keine Verzögerungen mehr...

    Das Ganze ist etwas unhandlich zu konfigurieren, z.B. so:

    [DriveLetters10]
    PortName=3-2
    Letter1=U
    Letter2=R
    Letter3=

    ;für mehrere Ports, z.B. alle an einem Hub der an 5-1 hängt
    [DriveLetters20]
    PortName1=5-1-1
    PortName2=5-1-2
    PortName3=5-1-3
    PortName4=5-1-4
    Letters=X

    Oder kurz unter Nutzung von Wildcards beim PortName:

    [DriveLetters20]
    PortName1=5-1-?
    Letters=X

    Den Portnamen muß man sich erstmal ermitteln: Dazu an die betreffenden Ports ein USB-Laufwerk anschließen und ListUsbDrives starten, wo man dann die Port-Namen ablesen kann. ListUsbDrives gibt für jedes USB-Laufwerk sowas aus:

    MountPoint  = U:\
    VolumeLabel = VOYAGER1GB
    Size        = 991 MB
    MultiReader = no
    Drive Type  = removable drive
    DOS Device  = \Device\Harddisk8\DP(1)0-0+17
    Device Name = Corsair Flash Voyager
    USB Version = 2.0 (high speed)
    Serial      = ---
    USB Port    = 3-2

    Für den Port, an dem dieses Laufwerk angeschlossen ist, wäre die Einstellung für 'PortName' 3-2.
    Wenn noch ein USB-Hub dazwischen ist, wäre ein typischer Port-Name 3-1-1, bei zwei Hubs 3-1-1-1 usw.
    7-Port-Hubs sind manchmal zwei hintereinander geschaltete 4-Port-Hubs - dann nicht wundern, wenn bei 4 Ports ein Glied mehr als erwartet in der Kennung steht. Ein-Port-Hubs werden ab V4.4 mitgezählt, z.B. aktive USB-Verlängerungen.

    Bei USB 2.0 hat jeder physische USB-Port eines Root-Hubs zwei Inkarnationen - eine für USB 1.1 und eine für USB 2.0.
    Mit Microsofts UVCView kann man sich ein Bild machen. Hier ist schön zu sehen, wie die bei USB 1.1 die Ports auf mehrere Host-Controller verteilt sind, während die USB 2.0 Ports alle an einem Host hängen.

    Es gibt keine sichere Möglichkeit zu bestimmen, welche USB1- mit welcher USB2-Inkarnation den selben physichen Port teilt. Um für USB1 und USB2-Laufwerke an einem Port einen festen Laufwerks-Buchstaben zu erhalten, muß man beide Port-Namen ermitteln, indem man ListUsbDrives einmal mit angeschlossenem USB1- und einmal mit USB2-Laufwerk ausführt.
    Den zweiten Port-Namen kann man einfach - wie oben gezeigt - als weiteren 'PortNameX' eintragen.
    Aber wer hat schon USB1-Laufwerke...
    Dieses Doppelleben haben nur Root-Hubs.

    Der NEC µPD720200 USB 3.0 Host-Controller nutzt einen anderen Ansatz: Die zwei physischen Ports sind auf vier logische Ports verteilt. USB-3-Geräte erscheinen an den Ports 1 und 2, während USB-1und 2-Geräte an den Ports 3 und 4 erscheinen.
    Durch einen Bug im Treiber (mindestens bis V1.0.18.0) wird aber immer eine Portnummer 0 gemeldet.

    Die erste Nummer im Port-Namen ist die des Root-Hubs. Diese Nummer ist leider nicht konstant, bei mehreren Windows-Installationen auf einem Rechner kann es schon Unterschiede geben. Ebenso kann sich die Nummer eines Root-Hubs ändern, auch wenn ein USB-Host-Controller hinzugefügt oder entfernt wird.
    Wenn man dieses Problem hat (z.B. mit einem PCMCIA-USB-Controller), kann man auf die "lange" Notation zurückgreifen. Hier wird die Nummer des Root-Hubs durch die Geräte-ID seines Host-Controllers ersetzt, der Rest bleibt gleich.
    Beispiel:

    MountPoint      = U:\
    Disk Name       = VOYAGER1GB
    Size            = 991 MB
    Drive Type      = removable
    DOS Device      = \Device\Harddisk8\DP(1)0-0+17
    Device Name     = Corsair Flash Voyager
    Host Ctrl DevID = PCI\VEN_8086&DEV_2659&SUBSYS_3005103C&REV_03\3&B1BFB68&0&E9
    Host Ctrl Name  = Intel(R) 82801FB/FBM USB Universal Host Controller - 2659
    USB Version     = 2.0 (high speed)
    Serial          = ---
    USB Port        = 3-2

    Der "lange" Port-Name wäre hier PCI\VEN_8086&DEV_2659&SUBSYS_3005103C&REV_03\3&B1BFB68&0&E9-2.
    Ist jeder Typ Host-Controller nur einmal vorhanden, kann man die ID mit Wildcards verkürzen und so würde es auch über mehrere Windows-Installationen hinweg auf dem selben Rechner funktionieren:

    [DriveLetters20]
    PortName1=PCI\VEN_8086&DEV_2659*-2
    Letters=X




    Buchstaben abhängig vom Laufwerks-Namen



    Der Laufwerks-Name (auch "Datenträger-Bezeichnung", "Volume Label") ist das, was man im Windows Explorer bei Rechts-Klick auf ein Laufwerk -> Eigenschaften im erscheinenden Dialog eingeben kann. Meistens...
    Das was der Windows Explorer in Laufwerksliste als Namen anzeigt kann sowohl die Datenträger-Bezeichnung als auch eine Einstellung aus der Registry sein. Das was man beim Einfach-Klick auf ein Laufwerk als Name eingeben kann ist nicht das Volume-Label sondern nur ein Anzeige-Name der in der Registry hinterlegt wird.
    Ganz sicher ist man nur auf der Kommandozeile: Start -> Ausführen, CMD. Das Kommando LABEL zeigt und ändert ggf. die Datenträgerbezeichnung, das "volume label".

    Beispiel:

    [DriveLetters10]
    VolumeLabel1=Montag
    VolumeLabel2=Mittwoch
    VolumeLabel3=Freitag
    Letter1=U

    [DriveLetters20]
    VolumeLabel1=Dienstag
    VolumeLabel2=Donnerstag
    VolumeLabel3=Samstag
    Letter1=X

    Laufwerke die Montag, Mittwoch oder Freitag heißen, landen so auf U, Dienstag, Donnerstag, Samstag auf X.


    Wildcards können benutzt werden:

    [DriveLetters30]
    VolumeLabel1=Backup?
    Letter1=X

    Würde z.B. für Backup1, Backup2 usw. passen.



    Zum Lesen des Laufwerk-Names muß das Dateisystem gemountet sein - das kann bei langsam antworenden Laufwerken zu Verzögerungen führen, oder auch dazu, dass es gar nicht funktioniert.











    Buchstaben abhängig vom der Volume-Seriennummer



    Die Volume-Seriennummer ist ein 32-Bit Zufallswert, der beim Formatieren eines Laufwerks generiert wird.

    Der kann vom Nutzer nicht ohne weiteres geändert werden, ist somit u.U. besser als Kriterium geeignet als die Datenträgerbezeichnung.

    Seriennummer ermitteln:

    Start -> Ausführen
    CMD

    C:\>dir u:\*.x
    Datenträger in Laufwerk U: ist TEST
    Volumeseriennummer: B92B-8000


    ListUsbDrives zeigt die Seriennummer auch.


    Beispiel:

    [DriveLetters10]
    VolumeSerial=B92B-8000
    Letter=U


    Zum Lesen der Seriennummer muß das Dateisystem gemountet sein - das kann bei langsam antworenden Laufwerken zu Verzögerungen führen, oder auch dazu, dass es gar nicht funktioniert.



    Selbst ändern kann man die Volume-Seriennummer mit dem Kommandozeilen-Tool VolumeID von SysInternals.


    Wildcards können benutzt werden:

    [DriveLetters10]
    VolumeSerial=B92B-80??
    Letter=U




    Laufwerks-Buchstaben abhängig vom Laufwerks-Typ



    Folgende für USBDLM relevanten Laufwerks-Typen (DriveType) sind definiert:

    FLOPPY      Diskettenlaufwerke
    REMOVABLE   sonstige Wechseldatenträger, z.B. Kartenleser, aber auch die meisten USB-Sticks
    FIXED       Festplatten
    CDROM       CD/DVD-Laufwerke
    UNKNOWN     unbekannt, manche Kartenleser in Laptops
    RAMDISK     RAM-Disk (viele RAM-Disks erscheinen als FIXED)
    ALL / ANY   Beliebiger Typ ( Vorsicht! )

    Beispiel für USB-CD-ROM auf R:

    [DriveLetters10]
    DriveType=CDROM
    Letter1=R

    Beispiel für ATAPI-CD-ROMs auf L: und M:

    [DriveLetters10]
    BusType=ATAPI
    DriveType=CDROM
    Letters=L,M


    Wenn kein DriveType angegeben ist, gilt für einen Abschnitt die Vorgabe REMOVABLE oder FIXED, also Sticks, Cardreader,  Festplatten und sonstige USB-Wechsellaufwerke wie USB-ZIP, USB-JAZ, USB-MO...


    Sollen alle Laufwerks-Typen zutreffend sein, kann kurz "ALL" konfiguriert werden. Um z.B. für alle Nicht-Admins für alle USB-Laufwerke den Buchstaben wegzunehmen konfiguriert man:

    [DriveLetters10]
    UserGroup=Administratoren
    Letters=X,Y,Z

    ;keine USB-Laufwerke für alle anderen
    [DriveLetters90]
    DriveType=ALL
    Letter=--


    Niemals sowas konfigurieren:

    ;all others
    [DriveLetters90]
    BusType=ALL
    DriveType=ALL
    Letter1=-

    Das würde die Buchstaben aller Laufwerke entfernen, ob USB oder nicht ist egal dank BusType=ALL.


    Siehe auch Buchstaben abhängig vom aktiven Nutzer.




    Laufwerks-Buchstaben abhängig vom Geräte-Typ



    Der Geräte-Typ ist etwas USBDLM-spezifisches, um spezielle Geräte gesondert behandeln zu können.

    Definiert sind:
  • MSCR                 -> Multislot-Cardreader (ist immer auch CardReader)
  • CardReader           -> Laufwerke mit charakteristischen Zeichenketten im Name, wie "Card" oder "Reader"
  • U3                   -> U3-Stick oder eine Festplatte mit virtuellem CDROM, z.B. für Verschlüsselungs-Software
  • Floppy               -> Disketten-Laufwerk
  • TrueCrypt            -> Laufwerk, das ein TrueCrypt-Container ist (oder Container einer anderen Verschlüsselungs-Software)
  • ReadSharingViolation -> Laufwerk beim dem das Lesen mit ERROR_SHARING_VIOLATION fehlschlägt, z.B ein bereits gemouteter TrueCrypt-Container
  • TrueCryptVolume      -> ein gemountetes TrueCrypt-Laufwerk (wird nur bei [OnArrival] unterstützt)
  • AllZero              -> erster Sektor enthält nur Nullen (unformatiert oder Nicht-Windows-Laufwerk)
  • UnrecognizedVolume   -> Windows sagt ERROR_UNRECOGNIZED_VOLUME, z.B. Ext3-Laufwerk


    ListUsbDrives zeigt den oder die zutreffenden Geräte-Typen an.


    Beispiel für Multislot-Cardreader auf L, M, N, O

    [DriveLetters10]
    DeviceType=MSCR
    Letters=L,M,N,O

    Beispiel für Multislot-Cardreader in ein NTFS-Verzeichnis und Nutzung des Geräte-Names:

    [DriveLetters10]
    DeviceType=MSCR
    Letter1=C:\CardReader\%DevName%

    Unter C:\CardReader (der Ordner wird ggf. angelegt) werden dann Ordner anhand der Gerätenamen der Slots angelegt, z.B. 'USB2.0 CF_MD', 'USB2.0 SD_MMC' usw., vorrausgesetzt, der Reader hat für seine Slot 'sprechende' Gerätenamen wie die eben genannten. Oft heißen alle Slots gleich, z.B. 'USB USB', 'Generic USB' oder 'General Flash Disk' - dann hängt USBDLM notgedrungen Ziffern an, wenn es der letzte konfigurierte Mount-Punkt ist, sonst wird der nächste probiert.


    USBDLM erkennt einen Multislot-Cardreader als solchen, wenn er drei oder mehr Slots hat. Außderdem werden USB-Reader mit zwei Slots als Multislot-Cardreader erkannt, wenn sie CardReader erkannt werden, also charakteristische Namen haben.
    Nicht-USB-Cardreader, wie sie oft in neueren Laptops anzutreffen sind, werden standardmäßig nicht behandelt. Das läßt sich aber über die Geräte-ID erzwingen.

    Beipsiel für Laptop-SD-Reader mit BusType SCSI

    [DriveLetters10]
    DeviceID=PCI\VEN_1217&DEV_7120
    Letters=F,G



    Beispiel zum Verstecken von Laufwerken, die als TrueCrypt-Container genutzt werden:

    [DriveLetters10]
    DeviceType1=TrueCrypt
    DeviceType2=ReadSharingViolation
    Letter1=-

    Die Erkennung von TrueCrypt-Containern funktioniert nur solange TrueCrypt das Volume noch nicht gemountet hat, da TrueCrypt sich exclusiven Zugriff gönnt und USBDLM den Container dann nicht mehr testen kann. Das Container-Laufwerk bekommt dann ersatzweise den DeviceType ReadSharingViolation.


    Beispiel zum Verstecken von U3-AutoRun-CD-ROMs:

    [DriveLetters10]
    DriveType=CDROM
    DeviceType=U3
    Letter1=-


    U3 ist ein Standard für USB-Sticks, der es erlaubt, auf einem USB-Stick alle Einstellungen, Programme und Daten zu speichern, so dass ein Anwender auf Fremd-Rechnern arbeiten kann, ohne auf diesem Spuren davon zu hinterlassen. Dazu soll beim Anschließen des Stick automatisch das 'U3-Launchpad' starten - ein Startmenü, das sich im Systray einnistet. Da Windows XP die Zeile open= in der autorun.inf aber nur auf CD-ROM-Laufwerken standardmäßig ausführt, hat man U3-Sticks kurzerhand ein zusätzliches virtuelles CD-ROM-Laufwerk mit einer autorun.inf und dem U3-Startprogramm verpaßt. Das ist das oben genannte 'U3-Autorun-Laufwerk'. Tolle Lösung, die gerechterweise unter Vista nicht mehr ohne Rückfrage funktioniert.
    Will man davon nix wissen, konfiguriert man einfach 'kein Laufwerksbuchstabe' als Mount-Punkt, wie oben gezeigt. Dann geht dafür kein Autorun mehr und es wird kein Laufwerksbuchstabe verschwendet.

    USBDLM sieht alles als U3 was ein CDROM und ein normales Laufwerk auf einem USB-Gerät vereint. So findet sich ein virtuelles CDROM auch auf Laufwerken mit Verschlüsselungs-Funktion oder auf Werbe-Sticks.

    Will man das CD-ROM von U3-Sticks loswerden, aber das einer Festplatte behalten, muß man dieses virtuelle CD-ROM in einem Abschnitt mit niedrigerer Nummer abfangen:

    [DriveLetters10]
    DeviceID=DeviceID des CDROM-Laufwerks
    DriveType=CDROM
    DeviceType=U3
    Letter1=R

    Um einen U3-Stick in einen normalen zu verwandeln, bietet U3 übrigens ein Uninstall-Tool an:
    http://u3.com/uninstall

    Damit kann man auch seine eigene ISO-Datei zum U3-Autorun-Laufwerk machen. Ein grandioses Einfallstor für Schadsoftware auf zum zufällig finden hinterlassenen USB-Sticks...




    LW-Buchstaben abhängig vom Bus-Typ



    Mit Bus-Typ ist die Anschluß-Art des Laufwerks gemeint, wie USB, FireWire, SCSI usw.

    Wenn kein BusType konfiguriert ist, gilt der Standard BusType=USB, außer es ist eine Geräte-ID als Kriterium angegeben - die ist (ab V4.3) eindeutig genug.

    ListUsbDrives zeigt den BusType aller Laufwerke an, wenn es mit Parameter -a (wie alle) gestartet wird. Das macht die ListUsbDrives_To_Notepad.cmd.

    Mögliche BusTypes sind:

    USB
    FireWire
    SCSI
    ATAPI
    ATA
    SSA
    Fibre
    RAID
    iSCSI
    SATA (ab 2003 Server, XP-64 und Vista, bisher nie gesehen)
    SAS (ab 2003 Server, XP-64 und Vista)
    SD (manche interne Laptop-SD/MMC-Cardreader, abhängig von Kartentyp!)
    MMC (manche interne Laptop-SD/MMC-Cardreader, abhängig von Kartentyp!)
    Unknown (manche interne Laptop-Cardreader, virtuelle Laufwerke, Standard-Floppys)
    ANY oder ALL (jeder BusType - Vorsicht, USBDLM könnte interne IDE oder SATA Lauferke ummounten!)

    SATA-Platten haben bis einschließlich XP nie den BusType=SATA, der war unter XP noch nicht definiert. Dort erscheinen SATA-Platten entweder als ATA oder SCSI, manchmal auch als RAID!. Auch unter 2003 Server, XP-64 und Vista wurde ein BusType SATA noch nicht berichtet. ListUsbDrives zeigt den Bus-Typ:

    MountPoint        = Z:\
    Volume Label      = Backup_18
    Volume Size       = 200 GB (NTFS)
    Volume Serial     = 44E0-DE33
    Disk Size         = 200 GB
    Volume Name       = \\?\Volume{49e8598c-b0d0-11de-b41f-00304884ff2a}\
    Partition Name    = \Device\Harddisk2\Partition1
    Bus Type          = RAID
    Drive Type        = fixed
    INI Sections      = [DriveLetters10], [OnArrival20]
    Volume DevID      = STORAGE\VOLUME\1&30A96598&0&SIGNATURE379DB9F7OFFSET7E0000LENGTH2E933D8200
    Drive DevID       = SCSI\DISK&VEN_&PROD_ST3200822AS&REV_.320\5&279143B0&0&000000
    Ctrl  DevID       = PCI\VEN_197B&DEV_2360&SUBSYS_2360197B&REV_02\4&F39E1D8&0&00E0
    Host Controller   = JMicron JMB36X Controller
    Friendly Name     = ST3200822AS SCSI Disk Device

    Bus-Typen bitte mit großer Vorsicht konfigurieren. Wer Unsinn konfiguriert bekommt ihn!

    Besser immer zusätzlich eine DeviceID konfigurieren - die ist eindeutig. Und bevor man USBDLM damit arbeiten läßt, besser erstmal ListUsbDrives die dann zuständigen Abschnitte ("INI Sections") anzeigen lassen...


    Beispiel: USB- und FireWire-Platten größer 100GB auf X:

    [DriveLetters10]
    BusType1=USB
    BusType2=FireWire
    MinDiskSize=100GB
    Letter1=X

    ;alternative Notation mit Komma
    [DriveLetters10]
    BusTypes=USB,FireWire
    MinDiskSize=100GB
    Letter1=X


    Beispiel für ATA-Platte mit DeviceID 'IC35L120AVV207-0' auf X:

    [DriveLetters20]
    BusType=ATA
    DeviceID1=IC35L120AVV207-0
    Letter1=X

    Beispiel für internen Laptop-Cardreader mit BusType SCSI:

    [DriveLetters30]
    BusType=SCSI
    DeviceID1=SCSI\DISK&VEN_O2MICRO&PROD_SD
    Letter1=X

    In diesen zwei Beispielen kann ab V4.3 der BusType auch weggelassen werden - da eine (hoffentlich ausreichend eindeutige) DeviceID konfiguriert ist.

    Manche interne Laptop-Cardreader haben einen wechselnden BusType, abhängig von der eingelegten Karte SD oder MMC. Da man davon wohl nur einen im System hat, kann man sich die Geräte-ID hier sparen:

    [DriveLetters30]
    BusType1=SD
    BusType2=MMC
    Letter1=X


    Beispiel für virtuelle CD-Laufwerke, die von Elby CloneDrive oder von den
    Daemon-Tools V3 und V4 angelegt werden auf V, W, X, Y:

    [DriveLetters10]
    BusType=SCSI
    DeviceID1=ELBY CLONEDRIVE
    DeviceID2=SCSI\CDROM&VEN_GENERIC&PROD_DVD-ROM
    DeviceID3=SCSI\CDROM&VEN_DAEMON
    Letters=V-Y





    Buchstaben abhängig von der Partitionsnummer



    Laufwerke auf Festplatten haben Partitionsnummern - ListUsbDrive zeigt sie.

    Beispiel zum Verstecken von Partition 2 auf einer bestimmten Festplatte:

    [DriveLetters10]
    DeviceID=USB\VID_04B4&PID_6830\1234567890AB
    PartitionNumber=2
    Letter1=-



    Nicht Letter=-- konfigurieren, da das die gesamte Festplatte abmeldet!


    Auf Wechseldatenträgern ist die Partitionsnummer immer 1 oder 0, da Windows ab 2000 hier keine Partitionen unterstützt und immer nur die erste Partition einbindet.





    LW-Buchstaben abhängig vom Vorhandensein einer Datei oder Ordner



    Beispiel: Laufwerksbuchstabe A: wenn auf dem angeschlossenen Laufwerk die Datei \drive_a.id existiert

    [DriveLetters10]
    FileExists=%Drive%\drive_a.id
    Letter1=A

    So funktioniert das nur für USB-Laufwerke, wegen des Standardwertes BusType=USB.
    Soll das auch für andere als USB-Laufwerke funktionieren, muß man nachhelfen:

    [DriveLetters10]
    BusTypes=USB,FireWire,SCSI
    FileExists=%Drive%\drive_a.id
    Letter1=A


    Ab V4.2 können für die Datei Wildcards verwendet werden. Die Auswertung erfolgt dabei durch Windows - die Wildcards arbeiten somit abweichend von den USBDLM-internen Wildcards.
    Es wird nur genau das angegebene Verzeichnis durchsucht, keine Unterverzeichnisse!

    Beispiel zum Starten eines Bildbetrachters beim Auffinden mindestens einer JPG-Datei oder des Ordners "DCIM", wie er von allen Digitalkameras angelegt wird und "VideoPlayer" bei AVI und MPG:

    [OnArrival10]
    FileExists1=%Drive%\*.jpg
    FileExists2=%Drive%\DCIM
    open="%ProgramFiles%\Bildbetrachter\Bildbetrachter.exe" %Root%

    [OnArrival20]
    FileExists1=%Drive%\*.avi
    FileExists2=%Drive%\*.mpg
    FileExists3=%Drive%\*.mpeg
    open="%ProgramFiles%\VideoPlayer\VideoPlayer.exe" %Root%



    Ab V4.3 kann auf Abwesenheit einer Datei (auch Verzeichnis) getestet werden (FileNotExists).
    Beispiel zum Mounten eines TrueCrypt-Volumes auf X: falls X: frei ist:

    [OnArrival10]
    DeviceType=TrueCrypt
    FileNotExists=X:\
    open="%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /v %PartitionName% /q /lX



    Ab V4.3 kann mit DirExists und DirNotExists auch gezielt auf einen Ordner abgefragt werden:

    [OnArrival10]
    DeviceType=TrueCrypt
    DirNotExists=X:\
    open="%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /v %PartitionName% /q /lX



    Zum Lesen der Datei muß das Dateisystem gemountet sein - das kann bei langsam antworenden Laufwerken zu Verzögerungen führen, oder auch dazu, dass es gar nicht funktioniert.




    LW-Buchstaben abhängig vom aktiven Nutzer



    Der aktive Nutzer kann über seinen Nutzernamen und/oder seine Nutzer-Gruppe angegeben werden.

    Für Gruppen die auf einem Server definiert sind, kann USBDLM als lokaler Dienst die Gruppenzugehörigkeit nicht ermilleln.
    Deshalb startet USBDLM sich selbst nochmal im Kontext des angemeldeten Nutzers, liest die Gruppenzugehörigkeiten aus und meldet sie an den USBDLM-Dienst.
    Das passiert unmittelbar nach der Logon-Nachricht - da hat kein Nutzter die Chance in die Kommunikation zwischen
    USBDLM-Dienst und USBDLM-Nutzer-Instanz einzugreifen.
    Unter Windows 2000 ist das etwas kritisch - hier muß auf den Windows-Explorer gewartet werden, bevor USBDLM
    sich im Kontext des Nutzers starten kann. Hier wäre es denkbar, dass der (sehr fortgeschrittene) Nutzer die
    Daten fälscht.
    Damit USBDLM diesen Aufwand treibt:

    [Settings]
    NetUserGroups=1



    Beispiel für Nutzer-Namen:

    [DriveLetters10]
    UserName1=Vater
    UserName2=Mutter
    Letter1=X
    Letter2=Y

    ;keine USB-Laufwerke für die Kids
    [DriveLetters20]
    UserName1=KleinKind
    UserName2=GrossKind
    DriveType=ANY
    Letter1=-

    DriveType=ANY ist nötig, damit auch USB-Floppy- und USB-CDROM-Laufwerke keinen Buchstaben bekommen.


    Beispiel für Gruppen-Namen:

    [DriveLetters10]
    UserGroup=Administratoren
    Letter1=X
    Letter2=Y

    ;keine USB-Laufwerke für alle anderen
    [DriveLetters20]
    DeviceType=ANY
    Letter1=-


    Oder umgekehrt:

    ;keine USB-Laufwerke für Entrechtete
    [DriveLetters10]
    UserGroup1=Benutzer
    UserGroup2=Gäste
    DeviceType=ANY
    Letter1=-

    ;alle anderen haben's gut
    [DriveLetters20]
    Letter1=X
    Letter2=Y



    Oder über "Admin oder nicht":

    [DriveLetters10]
    UserIsAdmin=1
    Letter1=X
    Letter2=Y

    ;keine USB-Laufwerke fürs Fußvolk
    [DriveLetters20]
    UserIsAdmin=0
    DeviceType=ANY
    Letter1=-


    Damit ein bestimmter Stick auch bei einem Rechtlosen funktioniert, kann man noch einen Abschnitt mit der Geräte-ID des Sticks einfügen, siehe Buchstaben abhängig von der Geräte-ID.

    ;der geht immer, weil Abschnitt Nr. 15 vor Nr. 20 ausgewertet wird
    [DriveLetters15]
    DeviceID=USB\VID_067B&PID_2517
    Letter1=X
    Letter2=Y


    Wenn kein Nutzer angemeldet ist, sind Nutzername und Gruppe leer, es wird also kein Abschnitt benutzt in dem UserGroup oder UserName definiert sind. UserIsAdmin ist 0 wenn kein Nutzer angemeldet ist.

    Um einen Abschnitt bei "kein Nutzer angemeldet" wirksam zu machen, kann UserName=- oder UserGroup=- konfiguriert werden.

    Wenn XP oder Vista nach "Benutzer wechseln" den Anmeldebildschirm zeigt, gilt der letzte aktive Nutzer noch als angemeldet.










    Passwortabfrage



    Ab V4.5 kann USBDLM Laufwerksbuchstaben zunächst entfernen und nach einen Passwort fragen.

    Beispiel:

    ; eingeschränkte Nutzer werden nach einem Passwort gefragt
    [Password10]
    UserGroup=Benutzer
    password=geheim

    ; Administratoren fallen oben durch, brauchen somit kein Passwort


    Wenn das Passwort in Textform abgelegt ist, sollte der Lesezugriff für eingeschränkte Nutzer von der USBDLM.INI entfernt werden - sonst kann der Nutzer einfach nachsehen...
    Oder man notiert nur den MD5 Hashwert:

    [Password10]
    UserGroup=Benutzer
    passwordMD5=E8636EA013E682FAF61F56CE1CB1AB5C

    MD5-Text.zip

    Der USBDLM-Dienst akzeptiert ein Passwort pro Sekunde, die Anzahl der Versuche ist nicht begrenzt.

    Wenn die Passwortabfrage abgebrochen wird, wird das Laufwerk "sicher entfernt" oder dessen Datenträger ausgeworfen.

    Wird das Laufwerk oder der Datenträger wieder entfernt während die Passwortabfrage offen ist, wird diese geschlossen.

    Gültige Kriterien für Passwort-Abschnitte sind:
  • UserName
  • UserGroup
  • UserIsAdmin
  • DeviceID
  • BusType

    Im Gegensatz zu allen anderen Abschnittstypen sind hier alle Laufwerkstypen betroffen, also auch Floppys und CD/DVD-Laufwerke. Standard-Bustype ist wie immer USB.


    Mit Hilfe des "USBDLM Remote Password Tool", kann das Passwort auch übers Netzwerk eingegeben werden. So braucht der Administrator dem Nutzer das Passwort ggf. nicht verraten...
    USBDLM-Remote.zip

    Der Passwort-Dialog auf dem Client-Computer muß offen bleiben, er verschwindet sobald das korrekte Passwort übers Netzwerk empfangen wurde.

    Das USBDLM Remote Password Tool verläßt sich darauf, dass auf den Client-Computer zugegriffen werden kann, dass also bereits eine Anmeldung erfolgt ist.
    Alternativ kann USBDLM anonymen Zugriff auf seine Password-Schnittstelle erlauben:

    [Settings]
    RemotePasswordAnonymous=1











    Prioritäten



    Bis Version 3.x waren die Prioritäten der Konfiguration fest verdrahtet. Mit Version 4 hat man völlig freie Hand.

    Es wird immer [DriveLetters1] bis [DriveLetters99] und zuletzt noch [DriveLetters] ausgewertet. Der erste Abschnitt bei dem die Kriterien zum Laufwerk passen (und nur dieser) wird benutzt. Also immer vom speziellen Fall zum allgemeinen hin aufwärts konfigurieren.

    Wenn alle Abschnitte [DriveLettersX] keine Neuzuordnung des Laufwerks-Buchstaben ergeben haben, wird noch gepüft, ob der vergebene Laufwerksbuchstabe vom derzeit angemeldeten Nutzer schon als Netz- oder Subst-Laufwerk verwendet wird. Dann ordnet USBDLM den nächsten wirklich freien Buchstaben zu.

    Zuletzt wird noch geprüft, ob das neue Laufwerk überhaupt einen Mount-Punkt bekommen hat. Falls nicht, wird es dem ersten freien Buchstaben zugeordnet. Natürlich nur wenn das Laufwerk nicht auf "kein Buchstabe" konfiguriert wurde...












    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 Kommando-Zeile 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 Abschnit [Settings]:

    RemoteSessions=0         Remote-Sessions werden ignoriert
    RemoteSessions=1         Remote-Sessions werden berücksichtigt, falls kein lokaler Nutzer aktiv (default)
    RemoteSessions=2         Lokale und Remote-Nutzer sind gleichberechtigt

    Falls mehrer Nutzer gleichwertig sind, "gewinnt" der zuletzt angemeldete.


    USBDLMs AutoRun funktioniert auch, wenn das Laufwerk in einen NTFS-Ordner gemountet wurde.

    Durch Drücken der Umschalt-Taste ("Shift") wird das Starten übergangen.

    USBDLM unterstützt nur das Starten von ausführbaren Dateien (EXE, COM, BAT, CMD, LNK usw.), Dokumente allein werden nicht unterstützt - meist geht's, aber ohne Garantie. Also besser immer ein Programm angeben.
    open=test.txt
    könnte z.B. nicht funktionieren. Also besser so:
    open=notepad test.txt

    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:

    [OnArrival10]
    VolumeLabel=Backup
    open1=C:\BatchFiles\make_backup.cmd %drive%
    wait1=60000
    open2=C:\Tools\RemoveDrive.exe %drive%
    workdir2=%windir%

    Ausführbare Dateien werden zuerst im Arbeitsverzeichnis gesucht, dann im Windows-Suchpfad (Umgebungsvariable PATH). Ein zusätzlicher Suchpfad kann konfiguriert werden, z.B.:

    [Settings]
    OpenSearchPath=C:\BatchFiles


    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

    Unter Windows 2000 funktioniert das mangels Benachrichtigung nicht. Hier geht es nur einmalig beim Start des Dienstes:

    [Settings]
    AutoRunOnStartup=1







    AutoRun beim Anschießen



    1. autorun.inf auf dem angeschlossenen Laufwerk

    Die autorun.inf ist ein Windows-Mechanismus. Unter anderem kann über eine Zeile open= Windows beim Anschließen eines Laufwerks oder Einlegen eines Mediums (CD, DVD, Flash-Karte) ein beliebiges Programm ausführen. Mit jeder Windows-Verison wurde das weiter eingeschränkt, XP macht es nur noch auf CD/DVD-Laufwerken ohne Nachfrage, was dann zu so tollen Lösungen wie U3-Sticks und USB-Geräten mit Selfinstallern geführt hat, die ihren Autostart über ein virtuelles CD-ROM bewerkstelligen.
    Gerechterweise geht unter Vista auch das nicht mehr ohne Nachfrage.

    USBDLM kann die Zeile open= in einer autorun.inf auf Wechseldatenträgern, Festplatten, CD-ROMs und Floppys ausführen, bei Wechseldatenträgern auch beim Einlegen einer Karte, sonst nur beim Anschließen eines Laufwerks.

    Bsp: Nur für Wechseldatenträger:

    [Settings]
    AutoRunInf=1

    Werte für andere Typen, bei Bedarf addieren:

    Wechseldatenträger: 1
    Festplatten:            2
    CDROMs:               4
    Floppys:                 8
    Unbekannt:                 16

    Bsp: Nur für Wechseldatenträger, Festplatten und CD-ROMs:

    [Settings]
    AutoRunInf=7

    Floppys unterstützen keine 'Benachrichtigung beim Einlegen' (insert notification) - daher kann das bei Floppys nur funktionieren, wenn ein externes Laufwerk mit eingelegtem Medium angeschlossen wird.


    Beispiel zum Öffenen eines maximierten Explorer-Fensters über eine autorun.inf auf dem angeschlossenen Laufwerk bzw. eingelegten Medium (Der Punkt steht für das aktuelle Verzeichnis, also das Stammverzeichnis des angeschlossenen Laufwerks):

    [Autorun]
    open=explorer .
    openstyle=max

    Auf x64-Systemem wird zuerst aus dem Abschnitt [Autorun.Amd64] gelesen. Wird ein Wert dort nicht gefunden, wird [Autorun] gelesen.



    Dem zu startenden Programm kann über die Zeile openstyle= ein Fenster-Stil vorgeschlagen werden - das ist eine Funktion von USBDLM und wird vom Windows-AutoRun nicht unterstützt. Viele Programme halten sich dran, z.B. der Windows-Editor "notepad.exe", andere nicht, z.B. der Windows-Rechner "calc.exe". Verfügbare Stile sind:

    max         maximiert
    min         minimiert
    hidden      versteckt
    noactivate  normal, aber Fenster wird nicht aktiviert, bekommt also nicht den Fokus

    Da der Autor es selbst versehentlich immer wieder mit windowstyle= versucht hat, funktioniert das jetzt auch...

    Unter Vista ist es recht knifflig, das Fenster eines aus einem Dienst heraus gestarteten Programms aktiviert zu bekommen. Falls das gar nicht nötig ist, bitte openstyle=noactivate konfigurieren.


    Die autorun.inf bietet natürlich ein hervorragendes Einfallstor für Schad-Software auf Fremd-Sticks. Deshalb kann USBDLM das Ganze über einen Schlüssel absichern:

    AutoRunKey=MeinTotalGeheimerSchlüssel

    Nur wenn sich in der autorun.inf die gleiche Zeile befindet, führt USBDLM die open= Zeile aus.

    Eine weitere Möglichkeit, etwas für die Sicherheit zu tun, ist, AutoRun ohne Admin-Rechte auszuführen (falls man nicht ohnehin als "Eingeschränkter Nutzer" arbeitet).

    [Settings]
    AutorunInfRestricted=1

    Wunder darf man davon nicht erwarten - auch ohne Admin-Rechte kann man Tastatureingaben aufzeichen, Nutzerdateien lesen, schreiben und löschen; nach Hause telefonieren geht auch.

    Ab V4.3 funktionieren auch die meisten anderen Erweiterungen, wie open1 bis open9, wait, delay usw., siehe unten.


    Label und Icon aus der autorun.inf

    Ab V4.4 kann USBDLM die Einträge label und icon aus der autorun.inf lesen und in die Registry-Werte DefaultLabel und DefaultIcon für dieses Laufwerk eintragen. Das kann sinnvoll sein wenn die autorun.inf komplett deaktiviert wurde oder einfach nicht funktioniert..
    Beides muß separat aktivert werden, analog zu AutoRunInf, siehe oben.

    Beispiel für Label und Icon von CDROM-Laufwerken:

    [Settings]
    AutoRunInfLabel=4
    AutoRunInfIcon=4



    2. AutoRun-Ereignisse in der USBDLM.INI - abhängig von Laufwerks-Eigenschaften

    [OnArrival]
    open=calc.exe

    Das würde z.B. bei jedem Anschließen eines USB-Laufwerks oder Einlegen einer Flash-Karte den Windows Taschenrechner ausführen.

    Es gelten die selben Kriterien wie bei den DriveLetters-Abschnitten, ein Abschnitt ist also standardmäßig nur für USB-Sticks und Festplatten gültig. Für andere Laufwerkstypen brauchts entsprechende Kriterien wie BusType und/oder DriveType. Hier darf man dann auch gefahrlos mit Einstellungen wie BusType=ANY und DriveType=ANY arbeiten.

    Das Kommando kann auch ohne Admin-Rechte ausgeführt werden (wenn der aktive Nutzer kein Admin ist, ergibt sich kein Unterschied):

    [OnArrival]
    open=calc.exe
    restricted=1

    oder mit vollen System-Rechten im Kontext "Local System":

    [OnArrival]
    open=calc.exe
    system=1

    Das Fenster der Anwendung wird man aber nie zu sehen bekommen, da man aus "Local System" heraus nicht einfach so auf den Desktop des Nutzers kommt.
    Nützlich ist das zum Ausführen von Tools die Admin-Rechte benötigen, der aktive Nutzer aber keine hat, wie unten im Beispiel 6.
    Außerdem funktioniert das auch wenn kein Nutzer angemeldet ist.

    Mit Windows Vista wurde die "User Account Control", kurz UAC, eingeführt. Das Nutzer-Konto ist dann geteilt in eines mit eingeschränkten Rechten und eines mit vollen Administrator-Rechten. Letzteres hat den Beinamen "elevated".
    Standardmäßig startet USBDLM Prozesse mit dem eingeschränkten Konto. Will man "elevated" starten:

    [OnArrival10]
    open=calc.exe
    elevated=1


    Als Paramter für das auszuführende Programm kann man Variablen wie z.B. %drive% das angeschlossene Laufwerk oder  %root% dessen Stammverzeichnis übergeben.

    Das Ganze geht auch abhängig von Kriterien, genau wie bei der Konfiguration der Laufwerksbuchstaben.
    Geprüft werden [OnArrival1] bis [OnArrival99], anschließend noch [OnArrival] (ohne Nummer). Der erste Abschnitt mit passenden Kriterien wird benutzt.
    Ein zusätzliches Kriterium ist der Laufwerksbuchstabe, Letter=X ist hier also ein Kriterium! Buchstabenlisten funktionieren hier nicht.
    Außerdem gilt das Standard-Kriterium MinDiskSize=1, so dass OnArrival-Ereignisse nur ausgeführt werden, wenn das Laufwerk mindestens 1 Byte groß ist, sprich, ein Medium eingelegt ist. Um OnArrival auszuführen wenn kein Medium eingelegt ist (wozu auch immer), kann  MinDiskSize=- konfiguriert werden.

    Dem zu startenden Programm kann über die Zeile openstyle= noch ein Fenster-Stil vorgeschlagen werden, siehe oben.

    Bei Bedarf kann noch eine Verzögerung in Millisekunden angegeben werden, Maximum sind 60000:

    delay=2000

    Um zu verhindern, dass der Nutzer das AutoRun durch drücken der Umschalt-Taste ("Shift") überspringt (z.B. wenn ein Virenscanner konfiguriert ist), kann im jeweiligen Abschnitt ein Force=1 gesetzt werden.

    Um die Intigrität der auszuführenden Datei sicherzustellen, kann ein MD5-Hashwert angegeben werden:

    [OnArrival]
    open=calc.exe
    md5=DDCD9FCD B7E1956E E69F8E58 B8C8BF0D

    Groß- / Kleinschreibung ist egal, ebenso die Leerzeichen. Nur wenn der MD5-Hash der EXE mit dem konfigurierten Wert übereinstimmt, wird das Programm ausgeführt.

    Soll verhindert werden, dass ein Programm ein weiteres Mal gestartet wird, konfiguriert man OneInstance=1:

    [OnArrival]
    open=calc.exe
    OneInstance=1


    Beispiele

    Die 10, 20, 30 in den Abschnittsnahmen der folgenden Beispiele stehen wie immer für eine beliebige Zahl von 1 bis 99.

    Beispiel 1: 
  • FotoSoftware für Laufwerke mit der Datenträgerbezeichnung "CANON_DC" oder "NIKON_DC", als Paramter die USBDLM-Variable %root%, also das Stammverzeichnis des neuen Laufwerks
  • nix für Laufwerk X
  • sonst ein maximiertes Explorer-Fenster mit dem Laufwerk

    [OnArrival10]
    VolumeLabel1=CANON_DC
    VolumeLabel2=NIKON_DC
    open="C:\Programme\Foto Software\FotoSoftware.exe" %root%

    [OnArrival20]
    Letter=X
    open=

    [OnArrival30]
    open=explorer.exe %root%
    openstyle=max


    Beispiel 2: 
    - Falls vorhanden, die Datei DATEN.TXT vom angeschlossenen Laufwerk nach C:\Daten kopieren, voher zwei Sekunden warten:

    [OnArrival10]
    FileExists=%drive%\DATEN.TXT
    delay=2000
    open=cmd /c copy "%drive%\DATEN.TXT" "C:\Daten"

    cmd ist der Windows-Kommandozeilen-Interpreter, /c heißt "Kommando ausführen und dann beenden", copy ist ein Kommando das cmd bekannt ist und Dateien kopiert.

    Das Selbe versteckt:

    [OnArrival10]
    FileExists=%drive%\DATEN.TXT
    open=cmd /c copy "%drive%\DATEN.TXT" "C:\Daten"
    openstyle=hidden


    Beispiel 3: 
    - Eine TrueCrypt Container-Datei mit Namen geheim.tc automatisch auf T: mounten:

    [OnArrival10]
    FileExists=%drive%\geheim.tc
    open="C:\Programme\TrueCrypt\TrueCrypt.exe" /v "%drive%\geheim.tc" /L T /q


    Beispiel 4: 
    - Einen TrueCrypt-Container automatisch auf J: mounten, dessen überflüssigen Laufwerksbuchstaben entfernen und das gemountete Laufwerk im Explorer öffnen:

    ;Laufwerksbuchstaben entfernen, ist eh nutzlos
    [DriveLetters10]
    DeviceType1=TrueCrypt
    DeviceType2=ReadSharingViolation
    Letter=-

    [OnArrival10]
    DeviceType=TrueCrypt
    open=C:\Programme\TrueCrypt\TrueCrypt.exe /v %PartitionName% /L J /q

    [OnArrival11]
    DeviceType=TrueCryptVolume
    open=explorer %root%

    %PartitionName% ist eine USBDLM-Variable und wird durch sowas wie
    \Device\Harddisk2\Partition1 ersetzt, so wie TrueCrypt das erwartet.
    %VolumeName% müßte technisch gesehen auch funktionieren - TrueCrypt mag das aber nicht.

    Der DeviceType ReadSharingViolation trifft für Laufwerke zu, die bereits durch TrueCrypt gemountet sind. Davon kann USBDLM keine Testdaten lesen - der Versuch wird mit ERROR_SHARING_VIOLATION zurückgewiesen, daher der Name. Dazu kommt es z.B. wenn der USBDLM-Dienst neu gestartet wird. Der Buchstabe soll dann ja weg, nochmal mounten wäre aber falsch. Genau das wird durch obige Konfiguration erreicht.

    Hinweis: USBDLM reagiert nur auf "Volumes", das was für gewöhnlich einen Laufwerksbuchstaben hat. Wechseldatenträger haben unter Windows 2000 und höher immer eine Partition (bei Superfloppys eine "virtuelle") und somit auch immer ein Volume, selbst wenn sie nicht formatiert sind. Deshalb funktioniert USBDLMs AutoRun mit TrueCrypt auch dann wenn ein Wechseldatenträger komplett als TrueCrypt-Container genutzt wird. 
    Bei Festplatten geht das nicht - hier muß man eine Partition anlegen - die kann dann als TrueCrypt-Container genutzt werden. Eine Festplatte komplett, also ohne Partition, als TrueCrypt-Container zu nutzen ist keine gute Idee, da im ersten Sektor eine Partitionstabelle erwartet wird. Wenn dann stattdessen Zufallsdaten vorgefunden werden, ist das Ergebnis nicht vorherzusagen - Windows kommt dann gerne mit der Empfehlung, die Platte zu initialisieren, was dem TrueCrypt-Container nicht gut tut...


    Beispiel 5: 
    Einen USB-Stick auf U: und als Stick_U freigeben, beim "sicheren Entfernen" die Freigabe wieder löschen:

    [DriveLetters10]
    Letter1=U

    [OnArrival10]
    Letter=U
    open=net share Stick_U=U:\

    [OnRemovalRequest10]
    Letter=U
    open=net share Stick_U /D


    Beispiel 6: 
    Einen USB-Stick auf A: mounten, falls A: belegt, dieses Laufwerk aus dem Weg räumen, indem es auf B: umgemountet wird:

    ;Auf A: mounten falls verfügbar, sonst unmounten
    [DriveLetters10]
    Letter1=A
    Letter2=-

    ;falls ungemountet (Kriterium "kein Mountpunkt"), A: auf B: ummounten und dann A: zuordnen
    [OnArrival10]
    Letter=-
    open1=ReMount A: B:
    wait1=1000
    open2=MountVol A: %VolumeName%

    %VolumeName% ist eine USBDLM-Variable und wird durch sowas wie
    \\?\Volume{aa6d706a-15da-11dc-a38f-0013d31dd4c5}\ ersetzt, so wie das Windows Kommandozeilen-Tool MountVol das erwartet.
    ReMount ist mein Kommandozeilen-Tool zum Ändern von Laufwerksbuchstaben. Download:
    http://www.uwe-sieber.de/files/remount.zip
    Wait bewirkt, dass open2 erst ausgeführt wird, wenn open1 fertig ist (oder 1000 ms abgelaufen sind, was bei ReMount aber nicht passieren wird).

    Nach dem Entfernen des Laufwerks das Ganze rückgängig:

    [OnRemoval10]
    Letter=A
    open=ReMount B: A:

    Wenn mit externen Mount-Tools gearbeitet wird, sollte folgende Einstellung gemacht werden, damit USBDLM externe Mount-Ereignisse mitbekommt:

    [Settings]
    ExternalMountEvents=1


    Mehrere Open-Kommados

    Ab V4.3 können bis zu 10 Open-Kommados ausgeführt werden - open1 bis open9 und open. Zusätzliche Parameber wie openstyle, restricted usw. müssen dann jeweils die selbe Nummer tragen. "delay" definiert eine Wartezeit bevor die open-Zeile ausgeführt wird. "wait" bewirkt, dass gewartet wird bis das Programm das die open-Zeile gestartet hat, beendet wurde - erst dann wie die nächste open-Zeile in Angriff genommen.

    Beispiel:
    - Zweimal den Rechner starten, einmal eingeschränkt, einmal normal:

    [OnArrival10]
    open1=calc.exe
    restricted1=1
    open2=calc.exe
    restricted2=0

    - Rechner starten, zwei Sekunden später Notepad

    [OnArrival10]
    open1=calc.exe
    delay2=2000
    open2=notepad.exe


    - Rechner starten, Notepad sobald Rechner beendet oder 10 Sekunden abgelaufen (die maximale Wartezeit ist 60000, also eine Minute)

    [OnArrival10]
    open1=calc.exe
    wait1=10000
    open2=notepad.exe


    AutoRun beim Nutzer-Login

    Die konfigurierten OnArrival-Ereignisse werden standardmäßig nur beim Anschließen eines Laufwerks bzw. Einlegen eines Datenträgers überprüft und ggf. ausgeführt.
    Soll USBDLM AutoRuns auch beim Login oder Nutzerwechsel ausführen:

    [Settings]
    AutoRunOnLogon=1

    Beim automatischen Logon ist der USBDLM-Dienst möglicherweise noch nicht gestartet, da XP nicht auf den Start aller Dienste wartet - die Illusion vom schnellen Windows-Start hat Vorrang. USBDLM verpaßt so das Logon-Ereignis.
    Deshalb führt USBDLM beim Dienst-Start die AutoRuns dennoch aus, wenn seit dem Systemstart weniger als zwei Minuten vergangen sind und bereits ein Nutzer eingeloggt ist, es sich also offenbar um einen verpaßten Logon handelt.

    Nicht verfügbar unter Windows 2000.


    Diagnose

    Wenn es Unklarheiten bzgl. Kommandozeilenparameter, Arbeitsverzeichnis, Fenster-Stil usw. gibt, kann man sich mit meinem Tool TestCommandline vergewissern, dass beim gestarteten Prozess alles wie konfiguriert ankommt:
    http://www.uwe-sieber.de/files/testcommandline.zip

    Standardmäßig schließt es sich nach 10 Sekunden. Durch Klick auf den Countdown startet der Timer von vorn. Mit dem Kommandozeilenparameter -t:xx kann ein anderer Timeout in Sekunden festgelegt werden.

    [OnArrival10]
    open1=testcommandline.exe /open1
    openstyle1=max
    wait1=2000

    open2=testcommandline.exe /open2
    openstyle2=max

    Das Fenster von TestCommandline wird nicht aktiv und ignoriert den Fenster-Stil, zeigt in aber an.







    AutoRun beim und nach dem Entfernen



    Analog zur AutoRun-Funktion kann USBDLM beim "Vorbereiten zum sicheren Entfernen" sowie nach dem Entfernen eines Laufwerks eine Kommandozeile ausführen.

    Um wirksam zu werden, muß das betreffende Gerät neu angeschlossen oder der USBDLM-Dienst neu gestartet werden.


    1. Beim Vorbereiten zum sicheren Entfernen

    Wird ein USB-Laufwerk über "Hardware sicher entfernen" abgemeldet, hat USBDLM noch Gelegenheit, auf diese Anfrage zu reagieren, während das Laufwerk noch verfügbar ist.
    Zu lange sollte das Ausführen des Kommandos nicht dauern, die maximale Dauer die USBDLM zugesteht beträgt 10 Sekunden. Ist der gestartete Prozess dann noch nicht beendet, wird die Anfrage zum "Sicheren Entfernen" durch USBDLM zurückgewiesen, Windows meldet dann "USBDLM verhindert das Entfernen".
    XP würde bis zu 30, Vista und Win7 nur 15 Sekunden warten.

    Beispiele

    Kopieren der Datei c:\text.txt in das Verzeichnis \backup auf dem zu entfernenden Laufwerk (die 10 ist wie immer eine beliebige Zahl von 1 bis 99):

    [OnRemovalRequest10]
    open=cmd /c copy "C:\test.txt" %drive%\backup

    Das Gleiche, aber nur wenn Laufwerk X: "sicher entfernt" wird

    [OnRemovalRequest10]
    Letter=X
    open=cmd /c copy "C:\test.txt" %drive%\backup


    Wie oben, aber nur wenn die Datei \backup\test.txt bereits auf dem Laufwerk vorhanden ist

    [OnRemovalRequest10]
    FileExists=%drive%\backup\test.txt
    open=cmd /c copy "C:\test.txt" %drive%\backup



    Ein TrueCrypt-Laufwerk auf T: unmounten, wenn die Datei geheim.tc auf dem zu entfernenden Laufwerk vorhanden ist:

    [OnRemovalRequest40]
    FileExists=%drive%\geheim.tc
    open="%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /q /d T

    Leider muß man den Laufwerksbuchstaben des TrueCrypt-Laufwerks kennen. Anhand des TrueCrypt-Containers (also Partition oder Datei) unmounten wäre technisch kein Problem - leider ist das bei TrueCrypt nicht vorgesehen.


    Bei langwierigen Operationen ist es besser, eine Batch-Datei zu schreiben, die alles Nötige erledigt und abschließend das Laufwerk zum sicheren Entfernen vorbereitet - dafür gibts mein Kommandozeilentool RemoveDrive:
    http://www.uwe-sieber.de/files/removedrive.zip


    Um ein laufendes Programm zu schließen, das auf das zu entfernende Laufwerk zugreifet, kann man das ab XP verfügbare Kommando tskill nutzen.

    Beispiel zum Beenden eines Prozesses, der auf das Laufwerk zugreift und etwas warten, bis das erledigt ist:

    [OnRemovalRequest1]
    Letter=X
    open=tskill MeinProzess
    afterdelay=2000

    Einen Prozess abzuschießen ist aber nicht nett - der freundliche Weg ist, eine WM_CLOSE-Nachricht an das betreffende Anwendungs-Fenster zu senden.
    USBDLM kann das betreffende Fenster anhand dessen Texts (Titelzeile) und (optional) dessen Fenster-Klasse finden.
    Falls die zu schließende Anwendung nach Schließen des Fensters noch etwas Zeit braucht, kann USBDLM bis zu vier Sekunden warten.

    Beispiel: Beim Versuch, Laufwerk X: abzumelden den Taschenrechner beenden und sicherheitshalber eine Sekunde warten:

    [OnRemovalRequest1]
    Letter=X
    CloseWindowText=Calc
    CloseWindowClass=SciCalc
    afterdelay=1000

    Wildcards können verwendet werden, falls die Titelzeile des Fensters variabel ist:

    [OnRemovalRequest1]
    Letter=X
    CloseWindowText=* - Notepad
    CloseWindowClass=Notepad
    afterdelay=2000

    Die Fensterklasse kann z.B. mit meinem Tool WinInfo ermittelt werden:
    http://www.uwe-sieber.de/files/wininfo.zip



    2. Beim Fehlschlagen des Vorbereitens zum sicheren Entfernen

    Wenn noch auf das zu entfernende Laufwerk zugegriffen wird, schlägt das "sichere Entfernen" fehl. Man kann dann z.B. eine gelöschte Freigabe wiederherstellen:

    [OnRemovalFailed10]
    Letter=U
    open=net share Stick_U=U:\


    3. Nach dem Entfernen

    Beispiel: Laufwerk A: wurde entfernt, ein anderes Laufwerk soll auf den frei gewordenen Buchstaben gemountet werden:

    [OnRemoval10]
    Letter=A
    open=mountvol A: \\?\Volume{433619ea-c6ea-11d9-a3b2-806d6172696f}\
    system=1

    MountVol ist ein Kommandozeilentool das ab Windows 2000 verfügbar ist.
    Mit system=1 wird es im Kontext "Local System" ausgeführt, so dass es die benötigten Rechte hat, auch wenn der Nutzer kein Admin ist. Zu sehen ist dann nichts, da "Local System" einen eigenen Desktop hat.


    Einschränkung

    Alle beschriebenen Ereignisse beim Entfernen werden nur für Laufwerke ausgelöst, die mindestens 5 Sekunden lang angeschlossen waren.





    AutoRun für andere Geräte



    Analog zur AutoRun-Funktion für Laufwerke kann USBDLM beim Anschließen und Entfernen beliebiger Geräte eine Kommandozeile ausführen.

    Einziges Kriterium ist die Geräte-ID. Hier funktioniert ausschließlich "Geräteinstanzkennung".
    Diese findet man im Geräte-Manager:
    Das betreffende Gerät mit rechts anklicken -> Eigenschaften, Reiter "Details". Hier ist unter XP schon die "Geräteinstanzkennung" ausgewählt. Dann unten auf die GeräteID klicken und "Strg+C" drücken - das kopiert sie in die Windows Zwischenablage. Ein Kontextmenü mit "Kopieren" gibts erst ab Vista.

    XP vor SP2 zeigt den Reiter "Details" nur wenn die Umgebumgsvariable DEVMGR_SHOW_DETAILS auf 1 gesetzt ist.
    Diese REG-Datei setzt den Wert: devmgr_show_1.reg
    Wirksam wird das nach dem nächsten Login.



    Beispiel für das Starten des Taschenrechners beim Anschließen eines bestimmten USB-Gerätes:

    [OnDeviceArrival10]
    DeviceID1=USB\VID_090C&PID_1000\A740000000000097
    open=calc

    Das Selbe nach dem Entfernen:

    [OnDeviceRemoval10]
    DeviceID1=USB\VID_090C&PID_1000\A740000000000097
    open=calc


    [OnDeviceRemovalRequest] gibt es nicht.



    Die sonstigen, von [OnArrival] bekannten Parameter, wie openstyle, system usw. sind auch hier gültig.





    AutoRun bei System-Ereignissen



    Analog zur AutoRun-Funktion kann USBDLM bei System-Ereignissen eine Kommandozeile ausführen.


    Die unterstützten Ereignisse sind:

    OnServiceStart       Dienst-Start, vor dem Überprüfen der Laufwerksbuchstaben
    OnServiceStarted     Dienst-Start, nach dem Überprüfen der Laufwerksbuchstaben
    OnServiceStop        Dienst-Stop
    OnServiceShutdown    Dienst-Shutdown (beim Herunterfahren von Windows)
    OnUserLogon          Nach Nutzer-Anmeldung
    OnUserLogoff         Nach Nutzer-Abmeldung
    OnUserLock           Nach "Sperren der Arbeitsstation"
    OnUserUnlock         Nach "Entsperren der Arbeitsstation"
    OnUserConnect        "Verbinden" von Maus und Tastatur mit dem Desktop (z.B. nach Anmeldung)
    OnUserDisconnect     "Trennen" von Maus und Tastatur mit dem Desktop (z.B. nach Abmeldung)
    OnSleepRequest       Beim Standy und Ruhezustand, es wird aber nicht auf Fertigstellung gewartet
                         Nicht unter Vista und Windows 7
    OnSleep              Nach Auslösen von Standby und Ruhezustand, praktisch erst beim Aufwachen...
    OnResume             Nach Aufwachen aus Standby und Ruhezustand

    OnUserConnect und OnUserDisconnect meint das "Verbinden" von Maus und Tastatur mit dem Desktop, z.B. beim Wechseln des Nutzers mit der "Schnellen Benutzerumschaltung" aber auch beim normalen Logon.

    Bei OnSleepRequest wartet Windows leider nicht bis die Nachricht verarbeitet wurde, es gibt also keine Garantie, dass irgendwelche Aktionen noch vor dem Standby oder Ruhezustand ausgeführt und vor allem fertiggestellt werden. Ab Vista gibt es OnSleepRequest nicht mehr.
    OnSleep wird meist erst beim Aufwachen getriggert.

    Die Ereignisse OnUserXxxx funktionieren nicht unter Windows 2000.


    Beispiel fürs Anlegen eines Netzlaufwerks nach Nutzer-Login:

    [OnUserLogon]
    open=cmd /c net user X: \\server\freigabe /user:nutzername passwort
    openstyle=min

    Die sonstigen, von [OnArrival] bekannten Parameter, wie openstyle, system usw. sind auch hier gültig, mehrere open-Zeilen können durch Anhängen einer Ziffer 1..9 genutzt werden.


    Ab V4.5 sind mehrere Abschnitte eines Typs möglich, die einzigen Kriterien sind die des aktiven Nutzers und die für das Vorhandensein einer Datei.


    Beipsiel zum Start des WIA-Dienstes für Admins und zum Stoppen des Selben für Nicht-Admins beim Login:

    [OnUserLogon10]
    IsUserAdmin=1
    open=net start stisvc
    system=1

    [OnUserLogon11]
    IsUserAdmin=0
    open=net stop stisvc
    system=1

    system=1 bewirkt, dass die NET.EXE im Kontext "Local System" ausgeführt wird. Somit sieht der Nutzer das eigentlich aufpoppende Konsolenfenster nicht und der Nicht-Admin hat kein Problem mit fehlenden Rechten.








    TrueCrypt



    TrueCrypt ist eine Open-Source-Software zur Datenträger-Verschlüsselung. Die verschlüsselten Daten werden entweder in einer Datei, einer Partition oder einem ganzen Laufwerk gespeichert.

    http://www.truecrypt.org

    Ein TrueCrypt-Container wird mit Zufallsdaten initialisiert - die verschlüsselten Daten sehen dann ebenso zufällig aus. Wird eine ganze Partition als TrueCrypt-Container benutzt, hat diese kein Dateisystem und damit auch keine Datenträgerbezeichnung, bekommt von Windows aber dennoch einen Laufwerksbuchstaben. Als Dateisystem zeigt Windows dann vielsagend "RAW".

    Nur die TrueCrypt-Anwendung mit ihrem Treiber kann den Container als zusätzliches Laufwerk mit den entschlüsselten Daten einbinden.


    Partition als Container

    Den Laufwerksbuchstaben einer als TrueCrypt-Container benutzen Partition sollte man entfernen - er ist nutzlos und birgt das Risikos, dass das Laufwerk fix mal formatiert wird...
    Das kann man in der Windows Datenträger-Verwaltung erledigen oder USBDLM überlassen.

    USBDLM kann den Buchstaben jeder als TrueCrypt-Container genutzten Partition entfernen. Die Erkennung eines TrueCrypt-Containers ist simple gestickt: USBDLM zählt die Null-Bytes im ersten Sektor, bei Zufallsdaten sind zwei von 512 zu erwarten, bei weniger als 8 nimmt USBDLM Zufallsdaten und somit den DeviceType TrueCrypt an.
    Wenn der Container bereits durch TrueCrypt gemountet ist, kann USBDLM keine Test-Daten lesen, weil TrueCrypt sich exclusiven Zugriff gönnt. Der Lese-Versuch wird mit dem Fehlercode ERROR_SHARING_VIOLATION verweigert. USBDLM vergibt dann den DeviceType ReadSharingViolation. Das passiert typischerweise, wenn USBDLM neu gestartet wird.

    Die typische Behandlung von TrueCrypt-Partitionen sieht so aus: Laufwerksbuchstaben entfernen und TrueCrypt zum Mounten starten.
    Wenn der USBDLM-Dienst neu gestartet wird, während eine TrueCrypt-Partition gemountet ist, soll zwar der Laufwerksbuchstaben entfernt werden bzw. entfernt bleiben, TrueCrypt aber nicht erneut aufgerufen werden. Genau das macht das folgende Beispiel:

    ; Buchstabe entfernen, da nutzlos
    [DriveLetters10]
    DeviceType1=TrueCrypt
    DeviceType2=ReadSharingViolation
    Letter=-

    ; Container auf J: mounten
    [OnArrival20]
    DeviceType=TrueCrypt
    open="%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /q /v %PartitionName% /letter J

    ; und ein Explorer-Fenster mit dem gemounteten TrueCrypt-Laufwerk
    [OnArrival11]
    DeviceType=TrueCryptVolume
    open=explorer %root%

    %PartitionName% ist eine USBDLM-Variable die USBDLM durch sowas wie \Device\Harddisk2\Partition1 ersetzt, so wie TrueCrypt das erwartet.


    Datei als Container

    USBDLM kann beim Anschließen eines Laufwerks nach dem Vorhandensein einer Datei schauen und diese dann durch TrueCrypt mounten lassen:

    [OnArrival30]
    FileExists=%drive%\geheim.tc
    open="%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /q /v "%drive%\geheim.tc" /letter J

    Ab besten nur dann, wenn der Zielbuchstabe auch frei ist:

    [OnArrival30]
    FileExists=%drive%\geheim.tc
    DirNotExists=J:\
    open="%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /q /v "%drive%\geheim.tc" /letter J


    Das TrueCrypt-Volume

    Wenn TrueCrypt einen Container mountet, dann macht es dessen Inhalt unter einem neuen Laufwerksbuchstaben verfügbar. Dabei handelt es sich nicht um ein "vollwertiges" Laufwerk - einige Interna wurden entweder eingespart oder es ging nicht anders, da TrueCrypt-Volumes ja nutzerspezifisch sein sollen.
    USBDLM sieht die Ankunft des neuen Laufwerksbuchstaben und kann dann einen OnArrival auslösen. Der DeviceType des gemounteten TrueCrypt-Laufwerks ist TrueCryptVolume.
    Mehr kann USBDLM mit einem TrueCrypt-Volume nicht machen. Es kennt dessen Laufwerkbuchstaben und macht ihn auch in den USBDLM-Variablen wie %drive% und %root% verfügbar. Das Ändern des Laufwerksbuchstaben wäre zwar möglich aber dann verliert TrueCrypt den Überblick - deshalb unterstützt USBDLM das nicht.

    Das TrueCrypt-Laufwerk zusätzlich in einem (bereits vorhandenen) NTFS-Ordner bereitzustellen, kann man sich aber basteln:

    [OnArrival11]
    DeviceType=TrueCryptVolume
    open1=mountvol "C:\TrueCrypt" %VolumeName%
    system1=1
    open2=explorer %root%


    USBDLM weiß nichts vom Zusammenhang zwischen dem TrueCrypt-Volume und dessen Container - es arbeitet nur aufeinanderfolgende Ereignisse ab.


    Sicheres Entfernen

    Beim "Vorbereiten zum sicheren Entfernen" des Wirtslaufwerks kann USBDLM das TrueCrypt-Volume unmounten lassen, TrueCrypt will dafür den Laufwerksbuchstaben des TrueCrypt-Volumes sehen:

    [OnRemovalRequest10]
    FileExists=%drive%\geheim.tc
    DirExists=J:\
    open="%ProgramFiles%\TrueCrypt\TrueCrypt.exe" /q /dismount J

    Der Parameter /q oder /quit ist wichtig: USBDLM beantwortet die Anfrage zum "Sicheren Entfernen" erst, wenn die gestartete TrueCrypt.EXE beendet wurde.
    Ohne /quit zeigt TrueCrypt nach dem Dismounten ein Fenster und USBDLM wartet und wartet... Letztlich wird Windows dann sagen "Der Dienst USBDLM verhindert das Entfernen"...





















    BitLocker To Go



    BitLocker ist die mit Windows Vista eingeführte Laufwerksverschlüsselung. BitLocker unterstützt ausschließlich lokale, nicht entfernbare Datenträger.

    Mit Windows 7 wurde "BitLocker To Go" eingeführt. Damit lassen sich Hotplug-Laufwerke verschlüsseln. Wie BitLocker wird es nur von den Editionen Ultimate und Enterprise unterstützt.

    BitLocker funktioniert über einen Filtertreiber, der den Zugriff auf das Laufwerk zuläßt oder blockiert.

    "BitLocker To Go"-Laufwerke gibt es in zwei Varianten, es hängt vom Dateisystem ab, welche man bekommt.

    Mit BitLocker verschlüsselte FAT/FAT32-Laufwerke haben auch ein unverschlüsseltes FAT-Dateisystem mit einigen Dateien darauf, die manman auf Windows ohne "BitLocker To Go" zu sehen bekommt. Die meisten Dateien tragen das Dateiattribut "versteckt", so dass die meisten Nutzer sie nicht zu sehen bekommen. Nicht versteckt sind die Dateien autorun.inf und BitLockerToGo.exe.

    Über die autorun.inf soll die BitLockerToGo.exe gestartet werden. Falls das nicht funktioniert, kann man sie manuell starten. Die BitLockerToGo.exe öffnet ein Explorer-artiges Fenster, das einem Lesezugriff auf das verschlüsselte Laufwerk verschafft.

    BitLocker-Laufwerke den mit NTFS formatiert sind, bieten dieses Feature nicht. Windows ohne Unterstützung für BitLocker To Go schlägt dann vor, das Laufwerk zu formatieren, einschließlich Windows 7. Da gabs wohl ein Kommunikationsproblem zwischen den Entwickler-Teams bei Microsoft.


    Was USBDLM tun kann

    Auf Windows-Editionen ohne Unterstützung für "BitLocker To Go" erkennt USBDLM NTFS-BitLocker-Laufwerke als solche - sie bekommen die DeviceType BitLocker.

    Auf Windows-Editionen mit Unterstützung für "BitLocker To Go" werden alle "BitLocker To Go"-Laufwerke als solche erkannt. AutoRun-Ereignisse werden dann erst für das entschlüsselte Laufwerk getriggert. Kriterien wie VolumeLabel oder VolumeSerial funktionieren erst wenn das Laufwerk entsperrt ist.


    Auf Windows-Editionen ohne Unterstützung für "BitLocker To Go" kann USBDLM z.B. BitLockerToGo.exe starten falls vorhanden und sonst den Laufwerksbuchstaben entfernen.


    Auf FAT-Laufwerken brauchts keinen DeviceType, man schaut nach der BitLockerToGo.exe und startet sie:

    [OnArrival20]
    FileExists=%drive%\BitLockerToGo.exe
    open=%drive%\BitLockerToGo.exe


    Mit NTFS-formatierten Bitlocker-Laufwerken kann man eh nichts anfangen - am besten den Laufwerksbuchstaben wegnehmen damit Windows nicht vorschlägt, es zu formatieren.

    [Driveletters80]
    DeviceType=BitLocker
    Letter=-

    Außerdem könnte man einen handgemachten BalloonTip anzeigen, der über das BitLocker-Problem informiert:

    [OnArrival30]
    DeviceType=BitLocker
    open=%usbdlmpath%\usbdlm.exe -balloon -time=20000 -title="%FriendlyName%" -text1="Auf BitLocker-verschlüsseltes Laufwerk kann nicht zugegriffen werden" -icon=110










    was 

    TrueCrypt is an open source software for creating encrypted drives. The drive's data is hold by a "container". This container can be a file, a whole disk partition or a whole disk.

    http://www.truecrypt.org



    Explorer Icon und Label



    USBDLM kann ein paar Werte in die Windows Registry schreiben, damit der Windows Explorer für ein Laufwerk ein spezielles Icon und Bezeichnung zeigt (DefaultIcon und DefaultLabel).

    Allerdings funktioniert das nicht immer - manchmal geht's, manchmal nicht. An USBDLM liegt's nicht.
    Planmäßig hat offenbar die Datenträgerbezeichnung (volume label) die höchste Prioritat, dann die Registry-Einträge und zuletzt der generische Name wie "Wechseldatenträger".

    Die Konfiguration ist analog zu AutoRun: Man kann Kriterien definieren, der erste Abschnitt bei dem die Kriterien passen, wird benutzt.

    Beispiel für ein Kamera-Icon für Laufwerke mit dem Volume-Label ("Datenträgerbezeichnung") CANON_DC:

    [Explorer1]
    VolumeLabel1=CANON_DC
    DefaultIcon=shell32.dll,139

    Das Icon befindet sich in der XP shell32.dll bei Index 139 (gezählt ab Null).

    Ein DefaultLabel ("Standard-Datenträgerbezeichnung") wird normalerweise nur benutzt, wenn das Laufwerk kein eigenes Volume-Label hat. Manchmal aber doch, das Verhalten von Windows scheint hier nicht vorhersagbar.

    Bei den Laufwerksbuchstaben A: und B: scheint XP besonders an seinen Floppy-Icons und Floppy-Namen zu hängen - hier ist die Warscheinlichkeit besonders hoch, dass XP die Einstellungen ignoriert.


    Beispiel für eine Standard-Datenträgerbezeichnung "USB-Laufwerk" für USB-Laufwerke:

    [Explorer2]
    BusType=USB
    DefaultLabel=USB-Laufwerk

    USBDLM unterstützt hier eine Reihe von Variablen.

    Beispiel für den Geräte-Namen für USB-Laufwerke ohne eigene Datenträgerbezeichnung:

    [Explorer2]
    VolumeLabel=-
    BusType=USB
    DefaultLabel=%DevName%


    Einschränkungen unter Windows 2000

    Hier ist maximale Länge des DefaultLabels auf 31 Zeichen beschränkt.
    Der Explorer berücksichtigt die Einträge erst nach einem Aktualisieren der Ansicht, z.B. durch Betätigen der F5-Taste.




    Gerät unter "Hardware sicher entfernen" zeigen oder nicht



    USBDLM kann ein für ein Laufwerk einen Wert in der Registry so modifizieren, dass es nicht mehr unter "Hardware sicher entfernen" angezeigt wird. Das ist z.B. für interne Kartenleser sinnvoll, damit sie nicht versehentlich abgemeldet werden.
    Beim nächsten Start des Laufwerks-Treibers wird der Wert aber zurückgesetzt, so dass er bei jedem Systemstart erneut gesetzt werden muß.

    Unter Windows 7 kann "Hardware sicher entfernen" zusätzlich bei Wechseldatenträgern auch "auswerfen", so dass dort alle Wechseldatenträger aufgelistet werden. Die bekommt man unter Windows 7 also nicht ausgeblendet.



    Konfiguriert wird das anhand des Kriteriums "Geräte-ID", siehe auch Buchstaben abh. vom der Geräte-ID.

    Beispiel für ein USB-Laufwerk:

    [HideFromSafelyRemoveHardware]
    DeviceID1=USB\VID_058F&PID_6369


    Oder anhand des "Friendly Name":

    [HideFromSafelyRemoveHardware]
    DeviceID1=Kingston Flash Reader



    Umgekehrt können auch Laufwerke unter "Hardware sicher entfernen" angezeigt werden, für die das normalerweise nicht der Fall ist:

    [AddToSafelyRemoveHardware]
    DeviceID1=IDE\DISKFUJITSU_MHV2040BH*00000025

    Aber selbst wenn man ein IDE-Laufwerk in die Liste bekommt, schlägt das Entfernen warscheinlich fehl.
    Mit meinem Kommandozeilen-Programm RemoveDrive kann man dagegen auch IDE-Laufwerke zum sicheren Entfernen vorbereiten.


    Geräte die nichts mit Laufwerken zu tun haben, kann USBDLM auch behandeln - da USBDLM darüber aber keine Daten vorhält, muß hier die komplette GeräteID angegeben werden:

    [HideFromSafelyRemoveHardware]
    CompleteDeviceID1=USB\VID_1758&PID_2004\050712014270000083

    Die Geräte-ID findet man im Geräte-Manager:
    Das betreffende Gerät mit rechts anklicken -> Eigenschaften, Reiter "Details". Hier ist unter XP schon die "Geräteinstanzkennung" ausgewählt. Dann unten auf die GeräteID klicken und "Strg+C" drücken - das kopiert sie in die Windows Zwischenablage. Ein Kontextmenü mit "Kopieren" gibts erst ab Vista.

    XP vor SP2 zeigt den Reiter "Details" nur wenn die Umgebumgsvariable DEVMGR_SHOW_DETAILS auf 1 gesetzt ist.
    Diese REG-Datei setzt den Wert: devmgr_show_1.reg
    Wirksam wird das nach dem nächsten Login.



    Laufwerks-Bezeichung

    Im "Hardware sicher entfernen"-Menü heißen USB-Laufwerke immer "USB Massenspeichergerät" (abhängig von der Windows-Sprache) plus Laufwerksbuchstabe. USB-Laufwerke die auf NTFS-Ordner gemountet sind oder keinen Mountpunkt haben, heißen nur "USB Massenspeichergerät", was eine Unterscheidung von mehreren Laufwerken unmöglich macht. "USB Massenspeichergerät" kommt für USB-Laufwerke aber aus dem Registry-Wert "DeviceDesc" und den kann USBDLM ändern:

    [Settings]
    SetDeviceDesc=1

    Mögliche Werte:
    SetDeviceDesc=0   -> keine Änderung
    SetDeviceDesc=1   -> für USB-Laufwerke ohne Laufwerksbuchstaben setzen
    SetDeviceDesc=2   -> für alle USB-Laufwerke setzen

    Standardmäßig schreibt USBDLM den "FriendlyName" des USB-Gerätes in den Wert "DeviceDesc", sowas wie "Corsair Flash Voyager". Benutzerdefinierte Namen mit USBDLM-Variablen sind auch möglich.

    Beispiel für FriendlyName und BusType für alle USB-Laufwerke:

    [Settings]
    SetDeviceDesc=2
    DeviceDesc=%FriendlyName% %BusType% Device

    Das Ergebnis wäre sowas wie "Corsair Flash Voyager USB Device".

    Da USB-Geräte mehrere Laufwerke haben können (Multislot-Cardreader oder Festplattenpartitionen) ist die Nutzung von laufwerkspezifischen Variablen hier nicht sinnvoll - es würde das letzte Laufwerk "gewinnen".

    Der Wert "DeviceDesc" wird auch für die Anzeige im Windows Geräte-Manager benutzt.

    Ab Windows Vista haben die Original-Werte der DeviceDesc einen anderen Inhalt:
    @usbstor.inf,%genericbulkonly.devicedesc%;USB Mass Storage Device
    Alle Versuche, die gewünschte Bezeichnung dort "minimal invasiv" reinzuscheiben sind fehlgeschlagen, es hilft nur das komplette Ersetzen. Welche Nebenwirkungen das hat, ist mir nicht bekannt.


    Bei anderen Bus-Typen als USB vergibt Windows bereits ordentliche Namen und die Bezeichnung läßt sich wohl auch nicht ändern.













    Gerät komplett ignorieren



    Geräte mit merkwürdigem Verhalten kommen immer wieder mal vor. USBDLM kann bestimmte Geräte komplett in Ruhe lassen.

    Konfiguriert wird das anhand des Kriteriums "Geräte-ID", siehe auch Buchstaben abh. vom der Geräte-ID.



    Beispiel für den Apple iPod, dessen iTunes-Software sich auch um den Laufwerksbuchstaben kümmert:

    [IgnoreDevices]
    DeviceID1=ven_apple&prod_ipod

    DeviceID1 bis DeviceID9 können konfiguriert werden.

    Das Ignorieren des Apple iPod ist bereits fest eingebaut. Soll er dennoch von USBDLM behandelt werden, kann das über einen Abschnitt mit dem Kriterium DeviceID1=ven_apple&prod_ipod erreicht werden:

    [DriveLetters10]
    DeviceID1=ven_apple&prod_ipod
    Letter=X













    Variablen



    Bei der Konfiguration von AutoRun, Explorer Label und Mounten in NTFS-Ordner können einige Variablen benutzt werden:


    Variablen

    Variable           Beschreibung            Beispiel

    %DriveLetter%      Laufwerksbuchstabe      X
    %Drive%            Laufwerk                X:
    %Root%             Stammverzeichnis        X:\
    %DevName%          Gerätename              Corsair Flash Voyager
    %FriendlyName%     Gerätename              Corsair Flash Voyager
    %BusType%          Anschluß-Typ            USB
    %DriveDeviceId%"   drive's device id       USBSTOR\DISK&VEN_CORSAIR&PROD_FLASH...
    %CtrlDeviceId%"    controller's dev id     USB\VID_090C&PID_1000\...
    %UsbSerial%"       USB serial number       123456789 oder ---
    %UsbPortName%      USB Port-Name           3-1-1
    %VolumeLabel%      Datenträgerbezeichnung  Mein Stick
    %DriveType%        Laufwerkstyp            REMOVABLE
    %FsName%           Datei-System            FAT32
    %Size%             Größe des Volumes       2 GB
    %VolumeSize%       Größe des Volumes       2 GB
    %DiskSize%         Größe des Datenträgers  20 GB
    %DosDevName%       DOS device name         \Device\Harddisk3\DP(1)0-0+d
    %PartitionName%    Partitions-Name         \Device\Harddisk2\Partition1
    %DeviceNumber%     Geräte-Nummer           2
    %PartitionNumber%  Partitions-Nummer       1
    %VolumeName%       Volume-Name             \\?\{GUID}\
    %Date%             Datum (yymmdd)          090331
    %Date4%            Datum (yyyymmdd)        20090331
    %Time%             Zeit (hh:mm:ss)         12:00:00
    %UserName%         Nutzer-Name             Administrator


    Außerdem können alle Variablen gestarteten Prozessen als Umgebungsvariable zur Verfügung gestellt werden.
    Bis einschließlich V4.2 war das eine globale Einstellung:

    [Settings]
    UsbdlmVariablesToOpenEnvironment=1

    Ab V4.3 ermittelt USBDLM nur noch Laufwerks-Infos die wirklich benötigt werden. Deshalb muß man jetzt konfigurieren, welche Variablen benötigt werden. "=1" geht auch, aber damit sind alle Optimierungen wirkungslos.

    Beispiel:

    [Settings]
    UsbdlmVariablesToOpenEnvironment=DevName, FsName, VolumeLabel





    Wildcards



    Bei der Konfiguration der Kriterien DeviceID, VolumeLabel, UsbPortName, UserName und UserGroup können Wildcards (=Platzhalterzeichen) benutzt werden. 
    Dabei steht der Stern '*' für Null bis n Zeichen, das Fragezeichen '?' für genau ein Zeichen.

    Buchstaben werden unabhängig von Groß/Kleinschreibung ausgewertet.


    Beipiel       | paßt z.B. für          | paßt nicht für
    --------------+------------------------+------------------
    Backup?       | Backup1, Backup2,      | Backup, Backup01
                  | BackupA, BackupB       |
    --------------+------------------------+------------------
    Backup*       | Backup, Backup1,       | Back
                  | Backup01, Backup001    |
    --------------+------------------------+------------------
    *Backup       | Backup, MyBackup       | Backup1
    --------------+------------------------+------------------
    *ck*          | Backup, Bäcker, ck     | Akku
    --------------+------------------------+------------------
    B*up          | Backup, Buckup, Bub    | Backu
    --------------+------------------------+------------------
    2-1-*         | 2-1-1, 2-1-7, 2-1-1-3  | 2-1, 1-1-1
    --------------+------------------------+------------------
    2-1-?         | 2-1-1, 2-1-7           | 2-1, 2-1-1-3
    --------------+------------------------+------------------
    USB\VID_090C* | USB\VID_090C&PID_1111. | USB\VID_2222...
    --------------+------------------------+------------------
    admin*        | Admin, Administrator   | adam
    --------------+------------------------+------------------






    Systemwiederherstellung



    Die XP Systemwiederherstellung fühlt sich auch für externe Festplatten zuständing. Das ist völlig unsinnig, aber Microsoft war in sechs Jahren XP nicht willens, hier wenigstens USB- und Firewire-Platten auszunehmen, warscheinlich damit es ein paar wenige Gründe gibt, auf Vista umzusteigen - hier wird standardmäßig nur das System-Laufwerk überwacht.

    Die Systemwiederherstellung kann man zwar für einzelne Laufwerke deaktivieren, das vergißt XP aber soblald ein neuer Systemwiederherstellungspunkt angelegt wird und das betreffende Laufwerk gerade nicht angeschlossen ist.

    USBDLM kann versuchen, gleich beim Anschließen eines Laufwerks die Systemwiederherstellung dafür zu deaktivieren. 
    Aber so wie es beim manuellen Deaktivieren Probleme gibt (Laufwerk fehlt in der Liste oder steht auf "offline"), klappt es auch automatisch nicht immer.

    [Settings]
    DisableSystemRestoreForNewDrives=1

    USBDLM kann auch noch versuchen, den Ordner "System Volume Information" zu löschen:

    [Settings]
    DeleteSviFolder=1

    Vorsicht: Falls das betreffende Laufwerk an einem anderen XP-Rechner angeschlossen war als dieser einen Systemwiederherstellungpunkt erstellt hat, und die Systemwiederherstellung war für dieses Laufwerk nicht deaktiviert, sind die zugehörigen Daten natürlich verloren und der Systemwiederherstellungpunkt ebenso unbrauchbar wie wenn das Laufwerk nicht angeschlossen ist.



    Um zumindest zu verhindern, dass die Systemwiederherstellung auf externen Laufwerken herumscannt und den Ordner "System Volume Information" füllt, kann man für externe Lauferke je einen Wert in die Regsitry schreiben, der ursprünglich für das NT-Backup-Programm gedacht war, unter XP aber auch für die Systemwiederherstellung genutzt wird:

    [Settings]
    AddNewDrivesToFilesNotToBackup=1

    So legt USBDLM für jedes USB-, FireWire-, TrueCrypt- und HotPlug-Laufwerk sowie für jeden Wechseldatenträger der in einen NTFS-Ordner gemountet wurde, einen Eintrag an, der dieses Laufwerk von der Überwachung ausnimmt, s. hier:
    http://www.tweakxp.com/article37472.aspx
    Die Einträge werden so angelegt, dass sie einen Windows-Neustart nicht überdauern ("volatile"). USBDLM legt sie beim Start des Dienstes ggf. wieder an.

















    Vista "Scan and Fix"



    Nach dem Anschließen eines FAT-formatierten USB-Wechseldatenträgers erscheint seit Windows Vista oft der "Scan and Fix"-Dialog.

    Nachdem einmal jenes "Scan and Fix" durchgeführt wurde (alternativ ein CHKDSK /F), sollten es beim nächsten Anschließen nicht wieder kommen.

    Tatsächlich kommt es oft immer und immer wieder, um dann doch keine Fehler zu finden. Es nervt einfach nur...


    Warum?

    Ein Blick auf den Bootsektor vor und nach dem dem "Scan and Fix" verrät, dass es immer dann danach gefragt wird, wenn ein bestimmtes Bit gesetzt ist. Aus welchem Anlass es gesetzt wird, ist unbekannt. Setzt man es manuell zurück, kommt keine Frage nach "Scan und Fix" mehr.

    USBDLM kann genau das beim Anschließen eine USB-Laufwerkes tun:

    [Settings]
    PreventVistaScanAndFix=1


    Was genau macht USBDLM?

    Besagtes Bit im Bootsektor befindet sich im vielsagend benamten Wert "BS_Reserved1", siehe Microsofts FAT32 File System Specification (fatgen103.doc).

    Normalerweise ist der Wert 0, ist er 1 springt "Scan and Fix" an.

    Wird ein neues USB-Laufwerk angeschlossen, sucht USBDLM darauf nach einer FAT-Partition und setzt in deren Bootsektor den Wert ggf. auf 0 zurück. Gelingt das, bevor Windows das Bit liest, kommt kein "Scan and Fix". Meist klappt das rechtzeitig, aber nicht immer.




    Technische Infos



    Hier ein paar Hintergrundinformatioen - was mir gerade so eingefallen ist. Manches findet sich auch an anderer Stelle in dieser Hilfe.


    Window-Dienst

    USBDLM ist ein Window-Dienst. Window-Dienste werden als solche in die Registry eingetragen und vom "Service Control Manager" gestartet und angehalten.

    Dienste laufen meist im Kontext "Local System" und habe dort maximale Privilegien. USBDLM ist ein Win32-Dienst, also kein Kernel-Dienst. Als Kernel-Dienst könnte man ihn mit dem Start-Typ "System" versehen - so wäre sichergestellt, dass er vor dem Nutzer-Login fertig geladen ist. Win32-Diensten ist das nicht vergönnt - hier ist "Automatisch" der frühestmögliche Start. Damit ist es möglich, dass der Nutzer eingeloggt wird, bevor USBDLM startet, siehe auch "USBDLM-Dienst startet zu spät" unter Probleme.



    Balloon-Tips

    Unter Windows 2000 konnte man als Dienst noch problemlos Fenster auf dem Desktop des Nutzers anzeigen - alles was man ein Dienst brauchte war das "interactive" Flag.

    Unter Windows XP klappt das nur für den ersten angemeldeten Nutzer, denn nur dieser läuft in der selben Windows-Session wie die Dienste.

    Unter Vista war Microsoft konsequent: Auch der erste Nutzer arbeitet in einer eigenen Session und Dienste mit dem "interactive" Flag werden mit einer Warnung im System-Log bestraft.

    Unter Windows 2000 und unter XP installiert sich USBDLM mit "interactive" Flag. Läuft der Nutzer in Session0 werden die Balloon-Tips direkt durch den USBDLM-Dienst angezeigt, sonst startet USBDLM sich für einen Balloon-Top selbst nochmal im Kontext des aktiven Nutzers.
    Wer im direkten Anzeigen des Balloontips ein Sicherheitsrisiko sieht, kann in der Computer-Verwaltung unter Dienste bei USBDLM die Option "Datenaustausch zwischen Dienst und Desktop zulassen" deaktivieren.
    Die USBLDM.MSI hat das "interacitve" Flag - unter Vista entfernt USBDLM das aber beim ersten Start.

    Wenn USBDLM sich für einen Balloon-Top selbst nochmal im Kontext des aktiven Nutzers startet, übergibt es die Daten für den Balloon-Tip per Kommandozeile.
    Das kann man auch für eigene Balloontips nutzen, z.B. für einen Balloontip nach dem Entfernen eines Laufwerks:

    [OnRemoval10]
    open=%usbdlmpath%\usbdlm.exe -balloon -time=1500 -title="%FriendlyName% %BusType% Device" -text1="entfernt:  %root%" -icon=110


    TrueCrypt

    TrueCrypt-Volumes sind nicht vollständig implementiert, so kommt z.B. beim Mounten eines TrueCrypt-Volumes keine Benachrichtigung wie bei "richtigen" Laufwerken. Möglicherweise geht das nicht anders, da TrueCrypt-Volumes ja auf einen Nutzer beschränkt sein sollen.
    Was bleibt ist eine schon bei Windows 3.0 vorhandene Benachrichtigung über neue Laufwerke bzw. eingelegte CDs, die auch bei Windows 7 noch an alle Fenster verschickt wird.
    USBDLM hat da als Dienst schlechte Karten, wenn der Nutzer in einer anderen Session läuft, was seit Vista immer der Fall ist. Unter XP läuft der Nutzer in einer anderen Session wenn er nicht der erste gleichzeitig lokal angemeldete ist.
    Hier braucht es ein Hilfsprogramm, das im Kontext des Nutzers mit einem unsichtbaren Fenster läuft und eben jene Benachrichtigung "nach unten" an den Dienst meldet. Genau das ist die USBDLM_usr.exe. Die wird geladen, wenn 
  • ExternalMountEvents=1 
  • ein [OnArrival] mit DeviceType=TrueCryptVolume
  • [BalloonTips] ShowTrueCrypt=1
  • USBDLM Win32 unter Vista/Win7 x64 mit NoMediaNoLetter=1

    Mit dem letzten Punkt wird ein Windows-Bug in der WoW64-Schicht umschifft, der wohl nicht mehr behoben wird - Windows 7 hat ihn auch noch. Mit der x64-Version von USBDLM hat sich das aber erledigt.





    Ereignisanzeige



    USBDLM kann beim Anschließen und Entfernen von Laufwerken Einträge in die Windows Ereignis-Protokollierung, das Event Log, schreiben:

    [Settings]
    EventLog=1

    Es werden dann solche Einträge in der Rubrik "Anwendung" geschrieben:

    Drive attached:  Name='FUJITSU MHK2120AT USB Device'  Type=FIXED  MountPoints='Z:\'  User=admin
    Drive removed:  Name='FUJITSU MHK2120AT USB Device'  Type=FIXED  MountPoints='Z:\'  User=admin


    AB V4.3 kann das frei konfiguriert werden:.

    Beispiel:

    [Settings]
    EventLogStringArrival=Drive attached:  Name='%DevName%'  Type=%DriveType%  MountPoint=%Root%  User=%UserName%
    EventLogStringRemoval=Drive removed :  Name='%DevName%'  Type=%DriveType%  MountPoint=%Root%  User=%UserName%



    Hinweis: Während die Windows Ereignisanzeige (der EventViewer) geöffnet ist, kann die USBDLM.EXE weder gelöscht noch ersetzt werden. Umbenennen ist aber möglich.









    Probleme



    Falscher Laufwerksbuchstabe für einen kurzen Moment

    Ein neu angeschlossendes Laufwerk bekommt von Windows den zuletzt zugeordneten oder den ersten freien Buchstaben. USBDLM ändert diesen dann ggf. zum frühstmöglichen Zeitpunkt.
    Wenn aber eine Anwendung auch diesen frühstmöglichen Zeitpunkt nutzt, sieht sie u.U. den alten Buchstaben, den USBDLM dann gleich ändert.
    Um das zu vermeiden, kann USBDLM nach dem Entfernen eines Laufwerks einen Wert in die Registry schreiben durch den das Laufwerk beim nächsten Mal keinen Buchstaben bekommt - USBDLM ordnet dann einen zu.

    [Settings]
    DeleteLettersOnRemoval=1

    Normalerweise ist das aber nicht nötigt.


    Problematisch ist auch die Erkennung von Multislot-Cardreadern unter Vista und Windows 7. Während unter XP beim Anschließen zunächst alle Datenträger ("Disks") im System erscheinen und dann deren Volumes, ist geht es ab Vista "Disk, Volume", "Disk, Volume" usw. Beim ersten Volume sieht das somit noch nicht nach Multislot-Cardreader aus. Hier wird also u.U. erst ein falsche Buchstaben zugeordnet und dann korrigiert. Deshalb für bekannte Multislot-Cardreader besser eine Geräte-ID konfigurieren.



    USBDLM-Dienst startet zu spät

    Seit XP wartet Windows mit dem Anzeigen des Login-Dialogs (oder mit dem automatischen Login) nicht mehr, bis alle Dienste gestartet sind - die Illusion vom schnellen Systemstart hat Vorrang. So kann es insbesondere bei Nutzung eines automatischen Logins passieren, dass USBDLM beim Rechner-Start bereits angeschlossene USB-Laufwerke nicht rechtzeitig ummounten kann, um sie z.B. für Netzlaufwerke frei zu machen.
    Ab V4.5.1 kann USBDLM das Ausführen von anderen AutoRuns und das Laden des Explorers verzögern bis der USBDLM-Dienst gestartet ist:

    [Settings]
    DelayDesktop=1

    Das funktioniert ganz simpel: Beim Herunterfahren erzeugt USBDLM einen RunOnce-Eintrag in der Registry. Der startet dann die USBDLM.EXE. USBDLM wartet dann so lange bis der USBDLM-Dienst läuft und beendet sich dann. Da Windows mit dem Ausführen weiterer AutoRuns und mit dem Laden des Deskops wartet bis alle RunOnce-Einträge abgearbeitet sind, hat USBDLM und auch andere Dienste Zeit zum rechtzeitigen Laden.
    Insgesamt geht keine Zeit verloren, nur die Illusion vom schnellen Start wird verdorben...


    Löschen von Verzeichnissen schägt fehl, wenn Laufwerk in NTFS-Ordner gemountet

    Da kann USBDLM nichts dafür, es ist eines von vielen Problemen des Windows Explorers, wenn NTFS-Ordner als Mount-Punkte genutzt werden, siehe "Mounten in NTFS-Ordner" unter Konfiguration.


    Laufwerksbuchstaben kehren zurück

    Wenn Laufwerksbuchstaben die per NoMediaNoLetter=1 entfernt wurden oder wenn wenn Laufwerke in NTFS-Ordner gemountet werden, kehren die Laufwerksbuchstaben manchmal überraschend zurück... Dann meint irgendeine tolle Software, alles besser zu wissen und ordnet einfach Laufwerksbuchstaben zu. Bekannt dafür ist das U3 Launchpad auf U3-Sticks (die U3launch.exe auf dem Pseudo-CDROM), siehe auch Kein Medium, kein Buchstabe
    Eine andere Software die Laufwerksbuchstaben zuordnet ist "Secure Storage Device SDK" (SSDService.exe) von MXI.


    USBDLM.EXE kann nicht gelöscht oder ersetzt werden

    Während die Windows Ereignisanzeige (der EventViewer) geöffnet ist, kann die USBDLM.EXE weder gelöscht noch überschrieben werden, umbenennen ist aber möglich. Das ist natürlich auch der Fall, während der USBDLM-Dienst läuft...


    Geräte die nicht starten unter Vista und Windows 7

    Für USB-Wechseldatenträger installiert Vista immer auch ein "WPD Dateisystem". WPD steht für "Windows Portable Device", eine Programmierschnittstelle für Geräte wie MP3-Player, Handys u.a.
    Wenn ein USB-Wechseldatenträger keinen Laufwerksbuchstaben hat (egal ob USBDLM den enfernt oder ob der Nutzer es manuell erledigt), schlägt der Start des Treibers mit "Code 10" fehl. Macht aber nichts: Als normaler Datenträger funktioniert das Laufwerk trotzdem.
    Wenn man den WPD-Kram komplett loswerden will, kann man den Dienst "Enumeratordienst für tragbare Geräte" (WPDBusEnum) deaktivieren. Nebeneffekt: Der Windows Media Player synchronisiert sich dann nicht mehr mit USB-Massenspeichern.


    Vista / Win7 Virtual Store

    Die mit Windows Vista eingeführte "User Account Control", kurz UAC, verweigert auch Administratoren den Schreibzugriff auf systemrelevante Verzeichnisse. Damit Software die Daten im ihrem Verzeichnis unter "C:\Programme" schreibt dennoch funktioniert, wird ihr nicht etwa der Schreibzugriff auf's eigene Verzeichnis gestattet, nein, er wird kommentarlos "umgeleitet" in den "Virtual Store". Das ist für Dateien das Verzeichnis
    Users/(UserName)/AppData/Local/Virtual Store/Program Files/(Programm).
    Die betreffenden Datei gibts dann mehrfach, einmal im Orignal und weitere Male für jeden Nutzer unter dessen Konto schreibend darauf zugegriffen wurde.
    USBDLM bekommt als Windows-Dienst immer das Orignial zu sehen, der eingeschränkte Administrator schreibt die USBDLM.INI aber in den Virtual Store. Ich hatte darin kein Problem gesehen, weil beim Test mit den Windows-Editor "Notepad" das Speichern verweigert wurde. Fremd-Editoren werden aber in den Virtual Store umgeleitet...
    Ich wollte die USBDLM.INI aber unter Programme haben, eben weil sie dort nur von Admins geändert werden darf. Ab V4.3 bringt USBDLM eine Warnung wenn im Virtual Store eine USBDLM.INI gefunden wurde - beim Klick auf diesen Balloon wird ein Explorer-Fenster mit diesem Verzeichnis geöffnet.

    Lösungen:
  • immer daran denken, die USBDLM.INI als echter Adminstrator ("elevated") zu bearbeiten ;-)
  • USBDLM z.B. in C:\USBDLM oder C:\Tools\USBDLM installieren - der Virtual Store kümmert sich nur um C:\Programme
  • Nutzung des eigentlich für Dienste vorgesehen Daten-Verzeichnisses - dort sucht USBDLM zuerst nach der INI. Das Verzeichnis ist aber unter jeder Windows-Version anderswo versteckt: Unter Vista ist das "C:\Windows\System32\config\systemprofile\AppData\Roaming\USBDLM". Unter Vista x64 wird "C:\Windows\System32" für Win32-Programme wie USBDLMs Win32-Version nach "C:\Windows\SysWOW64" umgeleitet...


    Windows 2000

    Beim erstmaligen Anschließen eines USB-Laufwerks erscheint es zunächst im System, verschwindet wieder und erscheint erneut. Unter XP und höher kann ermittelt werden, ob so ein Hin und Her bevorsteht, unter Windows 2000 nicht. Hier kann ein Balloontip durchaus mal 2x erscheinen und AutoRun doppelt oder auch gar nicht ausgeführt werden. Ab V4.3 hat USBDLM das aber weitgehend im Griff und ab Windows 7 gibts das Hin und Her gar nicht mehr.

    Nutzerwechsel bekommt USBDLM unter Windows 2000 nicht gemeldet - Laufwerksbuchstaben beim Login zu überprüfen, funktioniert daher unter Windows 2000 nicht, ebenso einige der System-Ereignisse 


    Erkennung von TrueCrypt-Laufwerken

    Ganze Laufwerke die als TrueCrypt-Container benutzt werden, kann USBDLM nur erkennen solange sie nicht durch TrueCrypt gemountet sind. TrueCrypt gönnt sich exklusiven Zugriff, so dass USBDLM keine Test-Daten lesen kann - der Versuch schlägt mit dem Fehler ERROR_SHARING_VIOLATION fehl.
    Aushilfsweise bekommt so ein Volume dann statt des DeviceTypes "TrueCrypt" den DeviceType "ReadSharingViolation". Mehr dazu hier: TrueCrypt


    Fehler 193

    Wenn der Start des USBDLM-Dienstes mit Fehler 193 fehlschlägt (ERROR_BAD_EXE_FORMAT), liegt das warscheinlich an unzureichenden Zugriffsrechten auf die USBDLM.EXE. Das Konto "SYSTEM" muß für den USBDLM-Ordner mindestens das Recht "Lesen, Ausführen" haben.
    Einstellen kann man das mit Rechtsklick auf den Ordner im Reiter Sicherheit.










    History



    V4.5.1 (13. Juni 2010)
  • Bugfix: Nach dem Wiederaufwachen aus Standby oder Ruhezustand wurden nicht antwortenden Kartenlesern Buchstaben zugeordnet
  • Bugfix: Wurde in einem [OnRemovalRequest] ein TrueCrypt-Volume abgemeldet, hat USBDLM die Nachricht dazu nicht verarbeitet und beim nächsten Mouten deshalb kein [OnArrival] und die autorun.inf verarbeitet und keinen Balloontip angezeigt
  • Bugfix: Der Passwort-Dialog wurde auf manchen Systemen nicht angezeigt
  • Bugfix: ListUsbDrives ist mit der aktuellen usb.id-Datei abgestürzt
  • Neu: Passwort kann mit anonymer Anmeldung übers Netzwerk empfangen werden


    V4.5.0 (9. Mai 2010)
  • Neu: Autorun bei System-Ereignissen abhängig vom Nutzer
  • Neu: Vista Scan and Fix kann unterdrückt werden
  • Neu: Passwortabfrage für Laufwerke
  • Neu: AutoRun funktioniert für Remote-Nutzer
  • Neu: AutoRun für beliebige Geräte 

    V4.4.2 (13. Dezember 2009)
  • Bugfix: Variable %UsbSerial% war ab V4.4.0 immer leer
  • Bugfix: Tausch von Laufwerksbuchstaben wurde nicht durchgeführt wenn der USBDLM-Dienst nach dem Login startet
  • Bugfix: FileExists funktionierte bei Einsatz von Wildcards nur wenn exakt eine Datei gefunden wurde
  • Neu: Tausch von Laufwerksbuchstaben kann Ringtausch durchführen

    V4.4.1 (11. November 2009)
  • Bugfix: Ausblenden von Laufwerken in "Hardware sicher entfernen" hat u.U. unter Vista nicht funktioniert, unter Windows 7 funktioniert es für Wechseldatenträger nach wie vor nicht (und wird's wohl auch nie)
  • Bugfix: ListUsbDrives hat immer einer falsche Warnung wegen einer USBDLM.INI im Vista/Win7 Virtual-Store gezeigt
  • Bugfix: Verzögerung beim Dienst-Start auf manchen Systemen
  • Bugfix: Schließen-Button auf dem Balloontip unter XP u.U. unvollständig gezeichnet


    V4.4.0 (1. November 2009)
  • Bugfix: Deaktvieren der Systemwiederherstellung für neue Laufwerke hat nicht funktioniert
  • Bugfix: BusTypes in Listennotation (z.B. BusType=USB,SCSI) haben u.U. nicht funktioniert
  • Bugfix: OnArrival hat für Laufwerke ohne eingelegten Datenträger auch mit MinDiskSize=- nicht funkioniert
  • Bugfix: ListUsbDrives zeigt jetzt alle für ein Laufwerk wirksamen Abschnitte
  • Neu: x64-Version verfügbar
  • Neu: Start des USBDLM-Dienstes bescheunigt
  • Neu: Buchstaben abhängig vom USB-Port arbeitet ohne nennenswerte Verzögerungen
  • Neu: Label und Icon aus autorun.inf können genutzt werden
  • Neu: In autorun.inf Dateien wird auf x64-Systemen zuerst der Abschnitt [autorun.amd64] gelesen
  • Neu: autorun.inf kann auch dann gelesen werden, wenn sie per IniFileMapping in die Registry umgeleitet wurde
  • Neu: Das Kriterium VolumeSerial kann mit Wildcards benutzt werden
  • Neu: "BitLocker To Go" verschlüsselte Laufwerke werden als solche erkannt
  • Neu: Zusätzlicher Suchpfad für ausführbare Dateien
  • Neu: Alternative Notation des USB-Portnamens


    V4.3.2 (7. Juli 2009)
  • Bugfix: Wenn in einem Abschnitt nur NTFS-Mountpunke konfiguriert waren, wurde ein vorhandener Laufwerksbuchstabe nicht entfernt
  • Bugfix: Textfarbe im Balloon-Tip war immer schwarz, auch wenn in Windows anders konfiguriert
  • Bugfix: ListUsbDrives zeigt für Festplatten und Wechseldatenträger den richtigen "Disk DosDevName" (bisher war's der Physical Device Object (PDO) Name)
  • Neu: Beim Start kann USBDLM Laufwerksbuchstaben u.U. tauschen, bisher mußte der Zielbuchstabe frei sein
  • Neu: Abschnittsnummern von 1 bis 9 können als 01 .. 09 notiert werden, z.B. [DriveLetters01]
  • Neu: Einträge Letter, Letters, Letter1 bis Letter9 - alle verstehen alle Formate (Buchstabe, Buchstaben-Liste, Mountpunkt, INI-Datei)

    V4.3.1 (1. Juni 2009)
  • Bugfix: Verzögerung bei Standby und Ruhezustand beseitigt
  • Bugifx: Langsam antwortende Laufwerke werden toleranter behandelt
  • Bugfix: Firewire-Laufwerke haben wieder den kurzen, "handgemachten" Namen im Balloontip

    V4.3.0 (30. April 2009)
  • Bugfix: Volume-Label nach Medienwechsel wurde unter Vista manchmal nicht erkannt, siehe auch http://support.microsoft.com/kb/943632
  • Neu: ListUsbDrives zeigt, welche Abschnitte in der USBDLM.INI für ein Laufwerk zum Zuge kommen
  • Neu: Nur wirklich benötigte Laufwerks-Infos werden ermittelt
  • Neu: Mehrere NTFS-Ordner können als Mountpunkt zugeordnet werden, auch zusätzlich zu einem Laufwerksbuchstaben
  • Neu: Bei [OnArrival], [OnRemoval] usw. können bis zu 10 Kommandos ausgeführt werden (open1 bis open9 und das bisherige open)
  • Neu: [OnArrival], AutoRun.inf und BalloonTips für TrueCrypt-Volumes
  • Neu: Wenn eine DeviceID konfiguriert ist, kann der BusType für Nicht-USB-Geräte weggelassen werden, ebenso der DriveType z.B. für CDROM-Laufwerke
  • Neu: [OnArrival] kann unter Vista Programme mit vollen Rechten ("elevated") starten 
  • Neu: Kriterium UserIsAdmin bezieht sich unter Vista auf den "elevateten" Nutzer, ist also für einen Admin mit UAC gleich 1
  • Neu: Kriterium für Abwesenheit einer Datei (FileNotExists)
  • Neu: [OnRemovalFailed] wird asynchron ausgeführt, um Event-Pingpong bei Nutzung von RemoveDrive zu vermeiden
  • Neu: AutoRun bei System-Ereignissen
  • Neu: Verhalten beim erstmaligen Anschließen von Laufwerken unter Windows 2000 verbessert
  • Neu: NoMediaNoLetter zuverlässiger unter Windows 2000
  • Neu: Bei OnArrival, OnRemoval usw. gilt das Standard-Kriterium MinDiskSize=1, d.h. es muß ein Medium eingelegt sein
  • Neu: Laufwerksbuchstaben können beim Aufwachen aus Standby und Ruhezustand überprüft werden
  • Neu: Laufwerksbuchstaben abhängig von der Volume-Seriennummer
  • Neu: Laufwerksbezeichnung für USB-Laufwerke im Menü "Hardware sicher entfernen"
  • Neu: Ballons unter Vista im fast korrekten Desgin
  • Neu: Balloontips mit Schatten und Ausblenden (jeweils falls in Windows aktiviert)
  • Neu: Bei Nutzung von USBDLM-Variablen als Umgebungs-Variablen kann (und sollte) eine Liste der benötigten Variablen konfiguriert werden
  • Neu: Abschnitt [ExcludedLetters] umbenannt in [NetworkLetters]


    V4.2.5 (29. März 2009)
  • Bugfix: Verstümmelter BalloonTip wenn Anführungszeichen im Gerätenamen
  • Bugfix: Gelegentlich falsche Datenträger-Größe im BalloonTip
  • Bugfix: Das Ausführen der autorun.inf Open-Zeile wurde in V4.2.4 (wieder) standardmäßig ohne Admin-Rechte gemacht (AutoRunInfRestricted war standardmäßig aktiviert)

    V4.2.4 (3. Dezember 2008)
  • Bugfix: Das Ausführen von [OnArrival] schlug fehl wenn der Pfad Leerzeichen enthielt und Kommandozeilenparameter benutzt wurden
  • Das Ausführen von [OnArrival] schlug fehl wenn das Laufwerk keinen Mountpunkt hat und kein Arbeitsverzeichnis (WorkDir) angegeben war
  • Bugfix: Unter Windows 2000 wurden die Port-Namen von USB1-Geräten an USB2-Ports nicht ermittelt

    V4.2.3 (14. September 2008)
  • Bugfix: Das Ausführen von [OnArrival] konnte seit V4.0 trotz Einstellung Force=1 durch Halten der Shift-Taste übergangen werden
  • Bugfix: Das Ausführen der autorun.inf Open-Zeile wurde seit V4.2 standardmäßig ohne Admin-Rechte gemacht (AutoRunInfRestricted war standardmäßig aktiviert)
  • Bugfix: [NoMediaNoLetterInclude] hat meist nicht funktioniert

    V4.2.2 (17. August 2008)
  • Bugfix: [OnArrival], [OnRemoval] funktioniert wieder ohne Angabe eines Arbeitsverzeichnisses wenn das Laufwerk keinen Mount-Punkt hat
  • Bugfix: [OnRemoval] funktioniert wieder ohne Angabe eines Arbeitsverzeichnisses
  • Bugfix: [OnRemoval] wird beim Entfernen einer Karte aus einem Kartenleser ausgelöst
  • Bugfix: Neue BusTypes SD und MMC (Laptop-Kartenleser) funktionieren
  • Bugfix: Virtuelle Laufwerke der Vista "Volumen-Schattenkopie" bekommen keinen Laufwerksbuchstaben mehr
  • Bugfix: Verzögerung beim Herunterfahren von Windows beseitigt

    V4.2.1 (19. April 2008)
  • Bugfix: Bei autorun.inf, [OnArrival] usw. ist das Stammverzeichnis wieder das aktuelle Verzeichnis

    V4.2.0 (12. April 2008)
  • Bugfix: Probleme mit NTFS-Mountpunkten länger als 51 Zeichen behoben
  • Bugfix: AutoRun-Programme schafften es unter Vista nicht in den Vordergrund
  • Neu/Bugfix: Auch nicht verbundene Netz-Laufwerke werden berücksichtigt
  • Neu: NoMediaNoLetter funktioniert unter Windows 2000
  • Neu: Fast alle Einstellungen werden ohne Neustart des USBDLM-Dienstes wirksam
  • Neu: Wildcards bei vielen Konfigurations-Parametern möglich
  • Neu: Bestimmte Laufwerke können komplett ignoriert werden
  • Neu: Laufwerke und sonstige Geräte können aus "Hardware sicher entfernen" entfernt werden
  • Neu: Richtlinie "Für Geschwindigkeit optimieren" kann für USB-Laufwerke gesetzt werden
  • Neu: Beim AutoRun können USBDLM-Variablen dem ausgeführten Programmen als Umgebungsvariablen zur Verfügung gestellt werden
  • Neu: Beim AutoRun kann das Programm ohne Admin-Rechte ausgeführt werden (falls der Nutzer Admin ist), oder auch im Kontext "Local System", falls die Rechte des angemeldeten Nutzers nicht ausreichen
  • Neu: Ungenutzte NTFS-Mountpunkte können beim Start des Dienstes entsorgt werden

    V4.1.0 (19. Oktober 2007)
  • Bugfix: Die letzten zwei Zeilen der USBDLM.INI wurden ignoriert (zwei oder mehr leere Zeilen am Ende haben geholfen...)
  • Bugfix: OnRemoval funktioniert auch beim Entnehmen einer Karte aus einem Kartenleser
  • Bugfix: Auch mit NoMediaNoLetter=0 hat sich USBDLM für einige Benachrichtigungen registriert, unter Vista64 wurde dadurch das "Vorbereiten zum sicheren Entfernen" verhindert
  • Bugfix: USBDLM-Dienst unter Vista nicht mehr als "interaktiv" gekennzeichnet -> keine Fehlermeldungen mehr im Syslog
  • Workaround: NoMediaNoLetter funktioniert unter Vista64
  • Neu: NoMediaNoLetter kann feiner abgestuft werden
  • Neu: NoMediaNoLetter kann für einzelne Geräte erzwungen werden per Abschnitt [NoMediaNoLetterInclude] (analog zu [NoMediaNoLetterExclude])
  • Neu: Laufwerksbuchstaben-Liste in Kurz-Notation, z.B. Letters=R,X,Y,Z
  • Neu: User=- als Kriterium für "kein Nutzter angemeldet"

    V4.0.2 (26. August 2007)
  • Bugfix: Die in eine Datei umgeleiteten Ausgaben von ListUsbDrives hatten ein falsches Format für den Zeilenvorschub, das der Windows Editor nicht vernünftig anzeigen kann
  • Bugfix: AutoRun-Ereignisse für Laufwerke ohne Laufwerksbuchstaben funktionierten nur mit dem zusätzlichen Kriterium Letter=-
  • Bugfix: Unter Windows 2000 haben Partitionsnummern und Balloontips bei Festplatten mit mehreren Partitionen nicht funktioniert

    V4.0.1 (20. Juli 2007)
  • Bugfix: "ExcludedLetters" hat meist nicht funktioniert
  • Bugfix: ListUsbDrives konnte ohne Admin-Rechte nicht alle Informationen anzeigen

    V4.0.0 (15. Juli 2007)
  • Neu: Neues Format für die USBDLM.INI, damit keine festen Prioritäten, mehr Möglichkeiten
  • Neu: LW-Buchstaben abhängig von aktiven Nutzer, dessen Gruppe oder dessen Admin-Status
  • Neu: AutoRun beim Einlegen eines Mediums (auch CD/DVD)
  • Neu: AutoRun-Ereignisse abhängig von allen Kriterien anhand derer USBDLM Laufwerksbuchstaben vergibt
  • Neu: AutoRun beim "Vorbereiten zum sicheren Entferenen" und nach dem Entfernen eines Laufwerks
  • Neu: Balloontip-Texte in verschiedenen Sprachen integriert
  • Neu: AutoRun beim Klick auf den BalloonTip
  • Neu: Laufwerks-Ereignisse ins Windows System-Protokoll


    V3.4.2 (9.5.2007)
  • Bugfix: mehrere (falsche) Buchstaben im Balloon-Tip angezeigt, wenn Hardwareerkennung unvollständig
  • Bugfix: Erkennung von U3-Laufwerken verbessert

    V3.4.1 (1.5.2007)
  • Bugfix: V3.4.0 basiert auf altem Code - alle für V3.4.0 versprochenen Funktionen gehen jetzt wirkich...
  • Bugfix: open= in autorun.inf geht jetzt auch ohne Pfadangabe wenn die auszuführende Datei auf dem angeschlossenen Laufwerk liegt

    V3.4.0 (18.4.2007)
  • Bugfix: Absturz bei mehr als 10 Laufwerken am selben Controller, z.B. bei virtuellen CD-ROMs
  • Bugfix: Windows Explorer hat in der Baumansicht Laufwerk u.U. ohne Namen angezeigt
  • Neu: LW-Buchstaben abhängig von der LW-Größe auch abh. von der Größe des Datenträgers
  • Neu: LW-Buchstaben abhängig vom Laufwerks-Namen ("Volume Label")
  • Neu: LW-Buchstaben abhängig von der Geräte-ID kann IDs aus externer Datei laden

    V3.3.1 (20.3.2007)
  • Bugfix: Möglicher Absturz auf Rechnern mit HyperThreading oder meheren CPU-Kernen
  • Bufgix: Errorlevel bei der Installation mit -silentinstall war immernoch 'falschrum' - jetzt 0 bei Erfolg
  • Neu/Fix: das Entfernen von Laufwerksbuchstaben für NoMediaNoLetter wir leicht verzögert gemacht, um vereinzelte Probleme mit dem Windows Explorer zu vermeiden
  • Neu/Fix: Beim Zuordnen von Laufwerksbuchstaben für NoMediaNoLetter wird das verzögert an den Windows Explorer gemeldet, da er sonst im Verzeichnisbaum den Laufwerksnamen nicht anzeigen will
  • Neu/Fix: Bei Deinstallation und NoMediaNoLetter=1 werden Laufwerksbuchstaben von Cardreadern wiederhergestellt


    V3.3.0 (08.02.2007)
  • Bugfix: Errorlevel bei der Installation waren 'falschrum' - jetzt 0 bei Erfolg
  • Neu: kein Problem mit AutoRun mehr unter Vista und Windows 2000
  • Neu: Installation, Deinstallation, Start und Stop fordern bei Bedarf Admin-Rechte an
  • Neu: AutoRun kann über einen Schlüssel abgesichert werden
  • Neu: Kein LW-Buchstabe für Laufwerke die keinen Buchstaben haben und TrueCrypt-Container sind
  • Neu: viel Feinschliff :-)
  • Neu: statt des guten alten HLP-Format die Hilfe jetzt als CHM, weil Vista HLP standardmäßig nicht unterstützt


    V3.2.0 (11.12.2006)
  • Bugfix: DeleteMountpointOnRemoval funktionierte nicht seit V3.0
  • Neu: 'kein Buchstabe' kann konfiguriert werden, z.B. um bestimmte Laufwerke loszuwerden oder um zu verhindern, dass Nutzer darauf zugreifen
  • Neu: Laufwerksbuchstaben können abhängig von der Geräte-ID des Laufwerks konfiguriert werden
  • Neu: BallonTips können für bestimmte Laufwerke deaktiviert werden

    Hinweis: Diese Version stand bis 6.1.2006 mit der falschen Versionsnummer 3.1.6.1beta zum Download.


    V3.1.0 (6.11.2006)
  • Bugfix: Balloontips funktionierten nicht für den zweiten angemeldeten Nutzer bei 'schneller Benutzerumschaltung' unter XP und generell unter Vista
  • Bugfix: Die Autorun-Funktion hat Programm im Kontext 'Local System' statt im Kontext des aktiven Nutzers gestartet
  • Neu: Laufwerksbuchstaben für USB-Floppys

    V3.0.3 (22.10.2006)
  • Bugfix: Mit NoMediaNoLetter=1 ist USBDLM V3.0.2 beim Start abgestürtzt...
  • Bugfix: Erkennen von Konflikten mit Netz-Laufwerken beim Start hat u.U. nicht funkiontiert
  • Neu: Multislot-CardReader mit nur zwei Slots werden als solche erkannt, wenn sie wenn sie zwei Slots haben und 'reader' im Geräte-Namen haben
  • Neu: IDE- und PCI-CardReader sollten erkannt werden

    V3.0.2 (16.10.2006)
  • Bugfix: Mit NoMediaNoLetter=1 verloren USB-Floppys ihren Laufwerksbuchstaben, wenn sie ohne eingelegtes Medium angeschlossen wurden         

    V3.0.1 (7.10.2006)
  • Bei AutoRun und RunOnArrival wird das neue Laufwerk zum aktuellen Verzeichnis gemacht, so dass Programme oder Batch-Dateien dort gefunden werden         

    V3.0.0 (3.10.2006)
  • Anwenden der Einstellungen beim Start des Dienstes
  • Über Abschnitt [ExcludedLetters] können Buchstaben für die Nutzung durch USB-LWs ausgeschlossen werden
  • Lesen von weiteren [ExcludedLetters] aus einer externen USBDLM.INI, z.B. von einen Serverkann
  • Behandlung von U3-Autorun-Laufwerken
  • Ausführen der open= Zeile in der autorun.inf auf Wechseldatenträgern
  • Globales AutoRun beim Anschließen eines beliebigen USB- oder Firewire-Laufwerks
  • Balloon-Tip mit Informationen über die zugeordnenten Mount-Punkte


    V2.4.4 (7.9.2006)
  • Anpassung: Ein USB-Gerät das zwei Laufwerke enthält, wird nicht mehr als Multislot-Cardreader eingestuft (erst ab drei Laufwerken) 

    V2.4.3 (28.8.2006)
  • Bugfix: Unter Windows 2000 gabs eine Fehlermeldung 'Datenträger einlegen'  wenn ein USB-Laufwerk ohne eingelegtes Medium angeschlossen wurde
  • Neu/Fix: Dienst-Name geändert von 'USB Drive Letter Manager' in 'USBDLM' 

    V2.4.2 (16.6.2006)
  • Bugfix: bei V2.4.1 konnte der Dienst auf manchen Rechnern beim Systemstart nicht gestartet werden
  • Log-Datei zum Debuggen kann aktiviert werden
  • kann als 'Eject-Server' für das Kommandozeilen-Tool EjectMedia dienen

    V2.4.1 (11.6.2006)
  • USB-Floppy-Laufwerke werden ignoriert
  • Problem mit doppelt angelegten Mount-Points für Multislot-Cardreader behoben
  • Tipp-Fehler im Dienst-Namen korrigiert ('USB drive letter mananger')
  • Errorlevel nach -install, -silentinstall usw. korrigiert

    V2.4 (21.5.2006)
  • erkennt neue USB-Laufwerk auch dann, wenn sie keinen Mount-Punkt bekommen haben - damit funktioniert auch das Mounten in NTFS-Order vernünftig
  • auf Wunsch Löschen von als Mount-Punkt benutzten NTFS-Ordnern beim Entfernen des Laufwerks
  • Mounten in NTFS-Ordner anhand des Geräte- oder Laufwerks-Namens
  • Laufwerksbuchstaben für USB-CD/DVD-Laufwerke

    V2.3 (5.5.2006)
  • erkennt Netz- und Subst-Laufwerke des angemeldeten Nutzers und remountet ggf. auf den nächsten wirklich freien Buchstaben

    V2.2.2 (18.4.2006)
  • funktioniert auch mit Laufwerken die nach dem Anschließen mehr als 10 Sekunden brauchen bis der Laufwerksbuchstabe erscheint

    V2.2.1 (2.4.2006)
  • funktioniert wieder unter Windows 2000 (V2.2 tat das nicht...)

    V2.2 (29.3.2006)
  • funktioniert unter Windows Vista
  • Suche nach c't USB Agent standardmäßig deaktiviert

    V2.1 (19.3.2006)
  • Vergabe der LW-Buchstaben abhängig vom USB-Port funktioniert auch mit USB-Laufwerken die als 'Lokale Datenträger' eingebunden werden
  • Ummounten von Multislot-Cardreadern auch auf Laufwerks-Buchstaben oder Mount-Points

    V2.0 (7.3.2006)
  • Vergabe der LW-Buchstaben abhängig vom USB-Port
  • Ummounten von Multislot-Cardreadern in einen NTFS-Ordner
  • Statt Laufwerks-Buchstaben sind auch leere NTFS-Ordner als Mount-Points möglich (experimentell)


    V1.1.1 (17.1.2006)
  • Fehler bei der Erkennung von USB und Firewire behoben der eine 'Access Violation' verursachte

    V1.1 (15.1.2006)
  • Einige Timeouts verlängert
  • Erkennung von USB und Firewire funktioniert auch unter Windows 2000

    V1.0 (10.1.2006)
  • Vergabe der LW-Buchstaben abhängig von der Datenträger-Größe möglich
  • Ausschluß-Liste für LW-Buchstaben, um eine USBDLM.INI auf dem angeschlossenen Datenträger
  • zu 'überstimmen'
  • Ausschluß-Liste für Datenträger-Bezeichnungen
  • Kein Ummounten, wenn auf dem Laufwerk eine usbagent.inf liegt und der c't USB Agent läuft
  • Nur noch für Nutzung im privaten und Bildungs-Bereich Freeware

    V0.6 (15.12.2005)
  • Vorhandensein eines Mediums im Laufwerk wird nicht mehr an dessen Seriennummer festgemacht, da
  • sich gezeigt hat, dass Sticks ab Werk oft keine haben

    V0.5 (24.10.2005)
  • Kümmert sich nur noch um Laufwerke, die Typ 'DRIVE_FIXED' oder 'DRIVE_REMOVABLE' sind und
  • wechselbare Medien haben oder Hotplug-Geräte sind. Letzterer Test funktioniert nur unter XP...

    V0.4 (5.9.2005)
  • Kümmert sich auch um Laufwerke mit Typ 'DRIVE_FIXED' (bisher nur 'DRIVE_REMOVABLE')

    V0.3 (25.8.2005)
  • Erste veröffentlichte Version




    Lizenz-Vereinbarung



    Software-Lizenz USBDLM, Stand 16. Oktober 2007

    1. Gegenstand des Vertrages  
      Gegenstand des Vertrages ist die beiligende Software, die
      Programmbeschreibung und Bedienungsanleitung, sowie sonstiges zugehöriges
      schriftliches Material, im folgenden auch als Software bezeichnet. Der Autor
      macht darauf aufmerksam, dass es nach dem Stand der Technik nicht möglich ist,
      Computersoftware so zu erstellen, dass sie in allen Anwendungen und
      Kombinationen fehlerfrei arbeitet. Gegenstand des Vertrages ist daher nur
      eine Software, die im Sinne der Programmbeschreibung und der
      Benutzungsanleitung grundsätzlich brauchbar ist.

    2. Lizenzgewährung
      Der Autor gewährt jedem interessierten Anwender im privaten Umfeld, öffentlichen
      Bibliotheken deren Nutzung kostenlos ist, sowie Bildungseinrichtungen eine
      kostenlose Nutzungslizenz. Eine Bildungseinrichtung gilt als solche, wenn
      Schüler und Studenten gegenüber sonstigen Mitarbeitern in der Mehrheit sind.
      Es ist dann keine explizite Lizenzerteilung erforderlich.

      Sonstigen Anwendern wird eine Testlizenz für einen Testzeitraum von 30
      Kalendertagen eingeräumt. Nach Ablauf dieser Testlizenz muss der Anwender
      entweder eine Nutzungslizenz pro Computer erwerben oder die Software muss
      von den betreffenden Computern entfernt werden.

      Der Lizenznehmer erhält das nicht ausschließliche, unwiderrufliche,
      übertragbare, zeitlich und räumlich unbeschränkte Recht, die Software auf
      der entsprechenden Anzahl von Computern innerhalb seiner Firma bzw. 
      Organisation einzusetzen.

      Ausnahme ist die "Standort-Lizenz", die für eine unbegrenzte Anzahl von
      Computern innerhalb der Organisation des Lizenznehmers gültig ist, die
      sich in 160 Kilometer Umkreis oder auf Reisen befinden.
      
      Eine Weltweit-Lizenz gilt für eine unbegrenzte Anzahl von Computern innerhalb
      der Organisation des Lizenznehmers, egal wo.

      Die Nutzungslizenz gilt für alle Versionsnummern der Software jetzt und in
      Zukunft für die entsprechende Anzahl von Lizenzen.
      Der Lizenznehmer hat kein Recht auf Updateversorgung durch den Autor, da
      aktuelle Versionen zum Download stehen.

      Überprüfbarer Beleg für die Lizenz ist die überlassene Lizenznummer. Diese
      wird für den Betrieb der Software nicht benötigt. Die Software hat keine
      eingebauten Beschränkungen und läuft nicht ab.

      Die Software kann frei kopiert und weitergegeben werden, soweit folgende
      Bestimmungen beachtet werden:  Die Software darf nur in den vom Autor
      erstellten MSI- oder ZIP-Archiven weitergegeben werden.  Keine Datei darf im
      Inhalt irgendwie verändert werden, außer für internen Gebrauch.


    3. Keine weiteren Rechtsansprüche  
      Der Autor ist sowohl Urheber als auch Eigentümer der Software, sowie in
      dieser Software verwendeter Algorithmen und Verfahren. Der Autor behält den
      Rechts- und Besitzanspruch an der Software.


    4. Keine Modifikationen oder Dekompilierung
      Es ist nicht gestattet, die Software oder Kopien im Ganzen oder teilweise
      zu verändern, zu übersetzen, zu disassemblieren oder zu dekompilieren.

    5. Redistribution
      Redistribution der unveränderten Software-Archivdateien auf CD/DVD von 
      Computer-Zeitschriften und sonstigen Publikationen ist gestattet.
      Zum Download bitte auf http://www.uwe-sieber.de/files/usbdlm.zip verweisen.

    6. Haftungsausschluß-Erklärung
      Soweit gesetzlich zulässig, haftet der Autor oder der Händler auf keinen Fall
      für irgendwelche Schäden aus entgangenem Gewinn, Betriebsunterbrechung,
      Datenverlust, für Schäden an Hardware oder anderer Schäden gleich welcher Art,
      die aus der Benutzung dieser Software oder aus der Tatsache, dass sie nicht
      benutzt werden kann, resultieren, selbst wenn der Autor oder der Händler auf
      die Möglichkeit solcher Schäden hingewiesen oder unterrichtet wurden. In jedem
      Fall ist die gesamte Haftung seitens des Autors oder des Händlers unter
      jedweder Bestimmung begrenzt auf die Summe, die von Ihnen tatsächlich für
      diese Softwarelizenz bezahlt worden ist. Der Autor haftet nicht für Schäden,
      es sei denn, dass ein Schaden durch Vorsatz seitens des Autors verursacht
      worden ist. Gegenüber Kaufleuten wird auch die Haftung für grobe
      Fahrlässigkeit ausgeschlossen. Eine Haftung wegen evtl. vom Autor
      zugesicherten Eigenschaften bleibt unberührt. Eine Haftung für

      Mangelfolgeschäden, die nicht von der Zusicherung umfasst sind, ist
      ausgeschlossen.


    7. Gewährleistung
      Der Autor übernimmt keine Haftung für die Fehlerfreiheit der Software.
      Insbesondere übernimmt der Autor keine Gewähr dafür, dass die Software den
      Anforderungen und Zwecken des Erwerbers genügt oder mit anderen von ihm
      ausgewählten Programmen zusammenarbeitet. Die Verantwortung für die richtige
      Auswahl und die Folgen der Benutzung der Software, sowie der damit
      beabsichtigten oder erzielten Ergebnisse, trägt der Erwerber. Das gleiche gilt
      für das die Software begleitende schriftliche Material.


    8. Gesetzesanwendung
      Dieser Vertrag unterliegt der Gesetzgebung der Bundesrepublik Deutschland und
      ist so anzuwenden, als ob die betreffenden Rechtsgeschäfte in der
      Bundesrepublik Deutschland stattfänden.


    9. Auflagen
      Der Autor hat das Recht, den Vertrag und die Lizenzrechte sofort zu kündigen,
      falls Sie die Bestimmungen dieses Vertrages nicht erfüllen.