Probleme

USBDLM

 

Probleme


 

Falscher Laufwerksbuchstabe für einen kurzen Moment

 

Ein neu angeschlossenes Laufwerk bekommt von Windows den zuletzt zugeordneten oder den ersten freien Buchstaben. USBDLM ändert diesen dann ggf. zum frühestmöglichen Zeitpunkt.

Wenn aber eine Anwendung auch diesen frühestmö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 "No-Letter"-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ötig.

 

Ab V4.8.6 USBDLM schreibt USBDLM bei Ankunft des Disk-Devices einen No-Letter-Eintrag in die Window-Mountmanager-Registrydatenbank, so dass das Volume zunächst keinen Buchstaben bekommt und USBDLM direkt den gewünschten zuordnen kann. Bis einschließlich Windows 7 funktioniert das gut, Windows 8 ist zu schnell. Zumindest kann USBDLM den falschen Buchstaben etwas früher löschen als zuvor.

 

 

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, so dass Windows beim Hochfahren USBDLM mit dem Parameter -wait4usbdlmsvc als unsichtbares Programm startet und auf dessen Beendigung wartet. Diese USBDLM-Instanz wiederum wartet so lange bis der USBDLM-Dienst läuft und beendet sich dann und Windows setzt den Startvorgang fort.

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 kaum Zeit verloren, nur die Illusion vom schnellen Start wird verdorben...

 

 

Löschen von Verzeichnissen schlä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 Mountpunkte genutzt werden, siehe "Mounten in NTFS-Ordner" unter Konfiguration.

 

 

Laufwerksbuchstaben kehren zurück

 

Wenn Laufwerksbuchstaben die per NoMediaNoLetter=1 entfernt wurden oder 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, Windows 7, Windows 8

 

Für USB-Wechseldatenträger installiert Vista/Win7/8 immer auch ein "WPD Dateisystem". WPD steht für "Windows Portable Device", eine Programmierschnittstelle für Geräte wie MP3-Player, Handys u.a. Seit Windows 7 läuft das Ganze im Gerätemanager unter "Tragbare Geräte".

Wenn ein USB-Wechseldatenträger keinen Laufwerksbuchstaben hat (egal ob USBDLM den entfernt 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. Und USB-Geräte die nur WPD verstehen funktionieren natürlich nicht mehr...

 

Ab Windows 8.1 gibt's das Problem nicht mehr.

 

 

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 Dateien gibt's dann mehrfach, einmal im Original 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, wohl weil die notepad.exe unter C:\Windows und nicht unter C:\Programme liegt. Fremd-Editoren die unter C:\Programme installiert sind, 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 Administrator ("elevated") zu bearbeiten, ab V4.7.3 gibt's dafür die _edit-ini.cmd
  • USBDLM z.B. in C:\USBDLM oder C:\Tools\USBDLM installieren - der Virtual Store kümmert sich nur um C:\Programme. USBDLM setzt dann die Schreibrechte auf EXEen und INI auf "nur Admins".
  • 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...

 

 

 

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" muss für den USBDLM-Ordner mindestens das Recht "Lesen, Ausführen" haben.

Einstellen kann man das mit Rechtsklick auf den Ordner -> Eigenschaften -> Reiter "Sicherheit".