What it is

USBDLM is a Windows service that gives control over Windows' drive letter assignment for USB drives. Running as service makes it independent of the logged on user's privileges, so there is no need to give the users the privilege to change drive letters.

It automatically solves conflicts between USB drives and network or subst drives of the currently logged on user.

Furthermore you can define new default letters for USB drives and much more.

It works on Windows XP to Windows 10.



What it is not

USBDLM isn't a wonder tool. If Windows has problems with the USB drives itself then USBDLM cannot fix it.

Here are some tips for solving problems with USB drives.



Getting Started

When a removable drive (USB flash drive, flash card reader, portable hard drive) is attached for the first time, Windows mounts it to the first available "local" drive letter. If there is a network share on this letter, Windows XP will use it anyway for the new USB drive because since XP network shares are specific to the current user and not visible in the "System" context where the letter is assigned. The USB drive then appears to be invisible. This is fixed by XP-SP3 in most situations.

Windows can save only one letter per drive and one drive per letter. Therefore the assingments often overwrite each other, especially on low letters near the first available ones.

You can change the letter assignments in the Windows Disk Management Console with a lot of mouse clicks but you have to do it again for every new device. USBDLM can for newly attached USB drives check if the letter is used by a network share of the currently logged on user and assign the next letter that is really available

reserve letters, so they are not used for local drives

assign a letter from a list of new default letters, also dependent on many different criteria as the active user, drive type, connection (USB, FireWire), USB port, volume label, size and others

extract the letter from the volume label

assign letters for a specific USB drive by putting an INI file on the drive

remove the drive letters of card readers until a card is inserted

show a balloon tip with the assigned drive letter(s)

define autorun events depending on many different criteria

activate a basic protection against 'BadUSB' devices; USBDLM can ask on arrival of a USB keyboard or network device if it shall be activated

many other things, see help file, available online as HTML version too All functions are applied to USB drives at the moment they are being attached, when the USBDLM service starts up and when a user logs on. USBDLM runs as service under Windows XP, Vista, Windows 7/8/10 and all their Server Editions.



Installation

Unzip the distribution file (USBDLM.ZIP) file to "C:\Program Files" (a USBDLM folder is included). Then execute the _edit-ini.cmd which creates or opens the configuration file, the USBDLM.INI. Make some setting now or later, e.g. by entering default drive letters for USB drives in section [DriveLetters]. Then register USBDLM as Windows service and start it by executing the _service_register.cmd You can change the USBDLM.INI without restarting the service because it's checked for changes each time a new drive is attached. You can deregister the USBDLM service by executing the _service_deregister.cmd Both can be done without the message box by using the following USBDLM commandline parameters USBDLM -silentregister USBDLM -silentderegister It returns Errorlevel 0 on success, 1 on failure. You can stop and start the installed service by means of the _service_stop.cmd and _service_start.cmd and of course by "net stop USBDLM" / "net start USBDLM".

Configuration

Running without a configuration USBDLM only prevents that a new drive gets the letter of a network share or a subst drive of the currently logged on user. It remounts then to the next letter that is really available. USBDLM is configured thru a text file, the USBDLM.INI. The USBDLM.INI is read from the folder of the USBDLM.EXE.

If required, read at Wikipedia how INI files work.

New default letters for new USB drives (flash or harddrive) [DriveLetters] Letters=U,Y,Z Have a look into the help file USBDLM_ENG.CHM for more details. If you get the "cannot display the webpage" error then the help file has the NTFS file attribute "downloaded from untrusted source" and Microsoft doesn't trust its own CHM file format. To fix this, right click the USBDLM_E.CHM, select Properties and click "Unblock".

The help file is available online as HTML version too.



Card Readers The typical 20-in-1 card reader eats one drive letter for each of its slots - if we own a card for or not. USBDLM can remove the reader's drive letters until a media is inserted. [Settings] NoMediaNoLetter=1 USBDLM assigns then a drive letter as configured. If you need different drive letters for a multislot cardreader, then use the criterion "DeviceType" in a DriveLetters section (MSCR is short for M ulti S lot C ard R eader): [DriveLetters] DeviceType=MSCR Letters=R,W

Network drive letters You can prevent Windows mounting local drives to certain letters by putting them into section NetworkLetters. This is especially useful for letters of network shares which Windows may assign to USB drives while booting. Do not configure other letters than network, subst and TrueCrypt drives here! [NetworkLetters] Letters=F,G

Balloon Tips USBDLM can show a balloon tip with information about the drive letter(s) or mount points used for a just attached drive: [BalloonTips] Enabled=1 There is much more USBDLM can do, just take some time and read the help file... USBDLM V5 gets Balloontips on removal, here I need translations from the text snippets in French, Italian , Spanish and Portuguese as USBDLM V4 already has:

Safely removed

Unsafely removed

Removed

Ejected

Network Drive

Subst Drive

Latest History

For the complete history check out the help file which is available online as HTML version too. V5.4.8 (21 June 2020) New: Command interface can set the "Offline" disk attribute (for forced safe removal in RemoveDrive) and restart a USB port (for RestartSrDev)

New: Safe removal for Letter=-- is forced when required

New: USB Drive Info highlights newly arrived and removed devices V5.4.7 (17 Jan 2020) Bugfix: USBDLM V5.4.6 and UsbDriveInfo did not show the USB speed V5.4.6 (30 Dec 2019) Bugfix: Crashs on user session notifications for so far unseen sessions

Bugfix: [OnArrival] with system=1 not executed again after change of media

New: Command interface can attach and detach VHDs (for RemoveDrive)

New: drive letters depending on the file system

New: UsbDriveInfo can change the volume serial number and the volumename V5.4.5 (05 June 2019) Bugfix: [OnUserLogon] (still) sometimes executed twice

Bugfix: UsbDriveInfo crashs V5.4.4 (18 March 2019) Bugfix: Crash on password request in V5.4.3 V5.4.3 (17 March 2019) Bugfix: Crash on OnArrival when no user is logged-on

Bugfix: USB speed in ballontips not shown or wrong on standard hubs in V5.4.2 V5.4.2 (17 February 2019) Bugfix: GPT Disk ID was read wrong since V5.4.0

Bugfix: OnUserActivated was executed twice

Bugfix: DiskKeepAlive read from sector 0 instead of a random sector

Bugfix: USB port name wrong on some computers

New: Eject media is assumed to be safe when the volume was locked up to one second before (workaround for the Windows Explorer not dismounting before eject) V5.4.1 (02 September 2018) Bugfix: Ballontips and AutoRun did not work with VeraCrypt volumes V5.4.0 (26 August 2018) Bugfix: DeviceType Bitlocker did not work since V5.3.0

Bugfix: %LetterFromLabel% did not work since V5.3.0

New: UsbDriveInfo show opens handles when safe removal or dismount failed

New: DeviceType Boxcrypt V5.3.9 (04 July 2018) Bugfix: With NoMediaNoLetter=3 driveletters of CDROM drives witout a media present where removed

Bugfix: LogFile emptied on config change V5.3.8 (30 June 2018) Bugfix: DeviceTypes TrueCrypt and ReadSharingViolation did not work in V5.3.7

Bugfix: Variables %FreeSpace%, %FreeSpacePercent% where zero on media arrival V5.3.7 (20 June 2018) Bugfix: Criteria UserName and UserGroup did not work with numbers since V5.3.3

Bugfix: Deadlock when no USBDLM.INI present since V5.3.0

New: DiskKeepAlive reads from a random position because reading from sector 0 did not work with some drives V5.3.6 (06 June 2018) Bugfix: In V5.3.5 all sections where evaluated as if UserIsAdmin=1 was there, so for restricted users nothing worked unless UserIsAdmin=0 was there

Bugfix: AutoRuns executed even the drive was configured in IgnoreDevices section V5.3.5 (13 May 2018) Bugfix: Environment variables in open= lines not expanded since V5.3.3

Bugfix: Criteria UserGroup was read wrong as "GroupName" since V5.3.0

Bugfix: Criteria UserGroup did not work with SID names since V5.3.0

Bugfix: Criteria with drive sizes did not work without a size unit

Bugfix: DeviceType TrueCrypt not recognized on service start

Bugfix: BalloonTipsExclude section where tested for presense of a media

Bugfix: BalloonTipsExclude section where not shown by UsbDriveInfo

Bugfix: DiskKeepAlive interval ignored the time unit

Bugfix: Wrong icons in UsbDriveInfo since V5.3.3 V5.3.4 (18 April 2018) Bugfix: Crashs on 64 Bit Windows with V5.3.3 V5.3.3 (17 April 2018) Bugfix: Crashs on 64 Bit Windows 8, 10 and Server 2012, 2016

Bugfix: DeviceType MultiSlotCardReader has not been set

Bugfix: Crash on AutoRun with non-active logged on user

Bugfix: autorun.inf not executed on TrueCrypt volumes V5.3.2 (22 Feb 2018) Bugfix: Determining Volume Serial and Label failed on drives with native 4K sectors V5.3.1 (21 Feb 2018) Bugfix: On AutoRun elevated=1 did not work V5.3.0 (18 Feb 2018) Bugfix: Crash on volume with more than 10 mountpoints

Bugfix: Crash with very long paths of NTFS mountpoints and SUBST drive target folders

Bugfix: Color of the BalloonTips under Windows 10 was wrong

Bugfix: On open=foo.cmd the MD5 check was performed for the CMD.EXE instead of the cmd file

New: Volume Label is read directly from disk - no more delays caused by the Win32 API call GetVolumeInformation

New: BadUSB Device Blocking changed: Whitelist is checked first, then the blacklist; This way you can whitelist your good USB keyboard and network devices and blacklist all others (DeviceID=*)

New: Support for multiple active user sessions (when RemoteSessions=3)

New: Balloontips and AutoRun for virtual volumes in Remote Desktop sessions

New: AutoDismout tray icon can be shown in Remote Desktop sessions

New: UsbDriveInfo can show other logged on users and their virtual drives

New: UsbDriveInfo shows user group memberships optionally only because in huge organisations it can be hundreds

New: UsbDriveInfo shows all USB keyboard and network devices

New: Variables for rounded and exact drive sizes, default is still "smart rounding"; for rounded sizes there are now %SizeRounded%, %VolumeSizeRounded, %FreeSpaceRounded%, %DriveSizeRounded%, %DiskSizeRounded%; and %SizeExact% etc...; The default rounding has been improved and can be customized

New: Symbolic constants in USBDLM.INI by means of #define lines as in C source code

New: Instead of asking for a passwort a message box can be shown which the user must answer before using a drive

New: Balloon tips for BitLocker volumes are shown after unlock by default

New: Scan and Fix prevention for exFAT too

New: OnDeviceArrival / Removal got some new criteria

New: Device specific variables %Class%, %Service% and %Enumerator%

New: Section BalloonTipsExclude works like OnArrival sections, so there can be multiple sections and all the criteria can be used

New: Command interface supports "Purge Cache" (discarding the disk cache) V5.2.8 (12 Jan 2017) Bugfix: Crash when attaching a potential BadUSB device and BadUsbWatchKbd=1 and/or BadUsbWatchNet=1 and a LogLevel>=3

Bugfix: Balloontip texts in French, Italian and Portuguese had damaged accent characters since V5.0

Bugfix: On arrival of a drive with the mouse pointer over the AutoDismount tray icon the new drive was immediately dismounted and locked, making file criteria and some other things fail

Bugfix: Occasional crash on startup if many AutoRuns to perform

Bugfix: Even listed in [IgnoreDevice] USBDLM requested some information from drives as the size

Bugfix: USBDLM stopped working when more than 256 different volumes where used

Bugfix: No more font change in UsbDriveInfo's right pane when hitting certain special (e.g. asian) characters

Bugfix: Correct display of characters outside the system's default ANSI codepage in UsbDriveInfo

New: UsbDriveInfo show container of VeraCrypt volumes >= V1.18 V5.2.7 (7 Sept 2016) Bugfix: Criteria GptDiskIdGuid did not work

New: Variable %GptDiskIdGuid% with the disk's GPT disk id GUID V5.2.6 (5 Sept 2016) Bugfix: Under Vista+ open= failed to start VBS files with a space in the path

Neu: Variable %UsbdlmVer% mit der USBDLM-Version V5.2.5 (31 Aug 2016) Bugfix: opening VBS files USBDLM did not pass parameters

New: USB Drive Info shows problem codes from the device manager in the tree nodes

New: Autorun events OnSafeRemoval and OnUnsafeRemoval V5.2.4 (22 June 2016) Bugfix: Since V5.1.7 [OnDeviceArrival] did not work

Bugfix: SuppressWindowsBalloons=1 did not work on non-english Windows 10

Bugfix: Ballontip's fadeout effect was broken under Vista/Win7,8,10 with non-classic display

Bugfix: open= did not work with a bat or cmd file in quotes

New: Under Windows 10 with SuppressWindowsBalloons=0 USBDLM's balloons for volumes with a drive letter are delayed by 3 Seconds to make the Windows 10 balloon come first; The delay can be changed

New: Search function in UsbDriveInfo V5.2.3 (5 June 2016) Bugfix: Since V5.2.2 creating USBDLM.LOG backups did not work with LogLevel >= 3

New: In the log file the date can be written in front of each line (LogShowDate=1)

New: In the log file timing, loglevel and thread ID can be ommitted (LogShowTech=0) V5.2.2 (28 May 2016) Bugfix: open= added the executable twice instead once as parameter under Vista, Win7,8,10

New: USBDLM service start/stop a event in the EventLog

New: Number of USBDLM.LOG backups can be set V5.2.1 (10 May 2016) New: Unwanted EventLog items can be deactivated V5.2.0 (8 May 2016) Bugfix: USBDLM_usr.exe (still) sometimes caused permanent CPU load

Bugfix: Since V5.0 USBDLM has set WriteCacheEnableOverride=1 into the Registry for newly attached USB drives if there was no UsbWriteCacheEnable configured

New: EventLog can be written to the LogFile instead V5.1.8 (25 April 2016) Bugfix: USBDLM_usr.exe sometimes caused permanent CPU load, probably since V5.0

Bugfix: open= did not work with document files since V5.1.3

Bugfix: USB speed icon not shown on some USB controllers running with other than Microsoft drivers

Bugfix: Maximum connection speed of USB 2.0 High-Speed devices running at Full-Speed shown wrong as USB 1.1 Full-Speed V5.1.7 (07 April 2016) Bugfix: Since V5.1.5 the PortName criteria did not work again for USB drives

Bugfix: Several minor issues fixed

New: OnArrival is triggered on instertion of a media into a CD/DVD drive V5.1.6 (17 March 2016) Bugfix: Since V5.0 USBDLM stoopped assigning drive letters after attaching a drive with a BusType for which there is no section DriveLetters V5.1.5 (11 March 2016) Bugfix: In V5.1.4 crash on balloon tip with NTFS mountpoint

Bugfix: Since V5.0 settings in the registry did not work V5.1.4 (09 March 2016) Bugfix: In V5.1.3 the Win32 USBDLM.exe was compiled without optimization for "Minimize Size", besides the 100KB bigger USBDLM.exe this made some virus scanners believing to detect a virus

Bugfix: Since V5.0 the PortName criteria did not work for USB drives

Rollback: Default for SuppressWindowsBalloons is 1 again; 2 (deactivating Windows balloon tips temporarily) makes the Windows tray icon for "Safely remove Hardware" stop working V5.1.3 (07 March 2016) Bugfix: Occational crashes fixed V5.1.2 (03. March 2016) Bugfix: Logdatei angelegt trotz WriteLogFile=0 V5.1.1 (29. Februar 2016) Bugfix: AutoDismount-TrayIcon was shown even there is no [AutoDismount] section V5.1.0 (29. Februar 2016) Bugfix: In Abschnitten wie [OnArrival] wurden die Zeilen system, elevated und restricted immer als gleich 1 bewertet, falls vorhanden

Bugfix: In Abschnitten wie [OnArrival] mit nur einer open= Zeile wurden nur Optionen berwertet die nach der open-Zeile stehen

Neu: Tray-Icon mit Anzeige des Auto-Dismount-Status

Neu: DismountOnSleep weckt keine schlafenden Laufwerke mehr auf V5.0.2 (19 Jan 2016) Bugfix: In a USBDLM.INI on an attached drive only Letter= and Letters= worked, but Letter1= etc possibly not V5.0.1 (18 Jan 2016) Bugfix: _edit-ini.cmd failed to create a USBDLM.INI when it had no write privileges; now Admin privileges are requested

Bugfix: USB speed in the balloon tip was wrong when the USB port number could not be determined, for instance if in the location information there isn't something like Port_#0002.Hub_#0003 or the address value is zero. Now the port number is determined by means of the USB-API.

Bugfix: The section [NetworkLetters] did not work in V5.0.0 if there was not section [DriveLetters] V5.0.0 (17 Jan 2016) New: _install.cmd and _uninstall.cmd renamed to what they really do: _service_register.cmd and _service_deregister.cmd; _start.cmd and stop.cmd renamed to _service_start.cmd and _service_stop.cmd to fit in the new naming scheme

New: For sections and values there is no more need for numbering; For unnumbered sections the order of appearence is what counts

New: Ballontips show in the icon if a USB drive is running at Full-, High-Speed, SuperSpeed or SuperSpeedPlus

New: Ballontips on removal with information if the removal was safe or not (still need translations for new texts)

New: Compact balloon tips for multi-slot card readers if only one slot has a media present

New: Balloontips can be customized way more flexible

New: AutoDismount

New: Suppressing Windows Balloontips works under Windows 10

Bugfix: After a successful request for a password sometimes no drive letter was assigned

Bugfix: Removal Policy was written to the registry even no OptimizeUsbDrivesForSpeed parameter was configured Download

For home users I suggest the ZIP file. Just unzip it to "C:\Program Files" and run the _service_register.cmd - this registers USBDLM as Windows service and starts it.

The _edit_ini.cmd opens the configuration file USBDLM.INI with admin privileges in the Windows text editor, if there is no USBDLM.INI it creates one first, containing some basic settings.

The MSI is for admins who want to deploy the software in their network. An MSI with integrated USBDLM.INI is not difficult to create, see USBDLM help under Creating an MSI. There is also some information about using the MSI for USBDLM updates. The software is fully functional and does not expire. There is no 'full version'. Download latest release V5.4.8:

Win32 ZIP (about 998 KB):

https://www.uwe-sieber.de/files/usbdlm.zip

Win32 MSI (about 1036 KB):

https://www.uwe-sieber.de/files/usbdlm.msi

x64 ZIP (about 1082 KB):

https://www.uwe-sieber.de/files/usbdlm_x64.zip

x64 MSI (about 1124 KB):

https://www.uwe-sieber.de/files/usbdlm_x64.msi

The last USBDLM V4: usbdlm491.zip usbdlm491.msi usbdlm491_x64.zip usbdlm491_x64.msi ListUsbDrives - the commandline version of UsbDriveInfo:

https://www.uwe-sieber.de/files/listusbdrives.zip

Previous releases

Conditions and Prices USBDLM

USBDLM is Freeware for private and educational (schools, colleges, universities) use only. The students shall outnumber all others. No explicit license is required then, just use it.

Otherwise one licence per computer is required after a 30 day test period even though the software does not expire. To support admins in schools which are often voluntary workers I made USBDLM freeware for schools, colleges and universities. But that's the line I've drawn and even your organization is non profit, good and important I have to say, it's beyond that line. Ask me for a discount in this case.

I don't ask for donations but some users insist, so

PayPal and BitCoins 1NPLS4pGswUf5BxQJNLUXt5YGoMucF5Tsb / QR are welcome.

Prices with effect from June 2011

(Euro prices are constant, USD prices are floating):



Purchase of: Price per licence 1 to 9 licences 15.00 USD 10 to 99 licences 9.00 USD 100 to 999 licences 6.75 USD 1000 to 9999 licences 4.50 USD >10000 licences 2.25 USD You can order directly at me, I send offer and invoice on request.

An online order isn't available because the KAGI Online Shop closed after 22 years.

The licence is delivered as licence number by eMail or on the invoice. It's not required for the software, the software is not limited in any way and it does not expire. You can pay an invoice at PayPal. All licences are not limited in time and valid for future versions too. All updates are free of charge. Purchasers of V1.x, etc are free to use up to V5.x.





last change: 21 June 2020

The phone number is here because of the strange german law. Please don't call me, write an eMail instead. Home: https://www.uwe-sieber.de/english.html