Index

USB Drive Letter Manager V4.2

Getting Started

Installation

Configuration

Problems

Licence agreement

Homepage:

http://www.uwe-sieber.de/usbdlm_e.html

General tips for USB drives:

http://www.uwe-sieber.de/usbstick_e.html

EMail:

mail@uwe-sieber.de


Getting started

USBDLM is a Windows service that gives control over Window's 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, reserve drive letters and much more.

USBDLM works with Windows 2000, XP, Server 2003 and Vista. It is tested under

  • Windows 2000 SP4
  • Windows 2000 SP4 + Rollup 1
  • Windows XP SP2
  • Windows XP SP3
  • Windows 2003 Server SP1
  • Windows Vista Ultimate
  • Windows Vista Bussiness N 64bit

Conditions

The software is not limited or crippled in any way. It's fully functional without a time limit. There is no "full version".

USBDLM is Freeware for private and educational use only. Otherwise a licence is required per computer after a 30 day test period.

"Educational" means institutions where the students outnumber the employees.

Price list is available here:

http://www.uwe-sieber.de/usbdlm_e.html

Licence agreement

Why?

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 drive letter. If there is a network share on this letter, Windows XP-SP2 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 context of the system where the letter is assigned. The USB drive then appears to be invisible.

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.

And, for USB devices that have no serial number you have to do it too when you attach it to a different USB port.

With USBDLM you can

  • 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 (no configuration required)
  • reserve letters, so they are not used for local drives
  • assign a letter from a list of new default letters, also dependend on many different criteria as the active user, drive type, type of connection (USB, FireWire), USB port, volume label, size, user and others
  • let remove the drive letters of card readers as long as there is no media present
  • let show an balloontip on drive arrival which show the assigned drive letter
  • executing an autorun, also depending on the criterions mentioned above
  • and much more...

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.

Instead of letters you can set up empty folders on NTFS drives as mount points too but this brings some limitations and problems, see configuration .


History

V4.2.2 (17th August 2008)

  • Bugfix: [OnArrival] , [OnRemoval] works again without configuring a workdir when the drive has no mountpoint
  • Bugfix: [OnRemoval] works again without configuring a workdir
  • Bugfix: [OnRemoval] is triggered on removal of a media from a card reader
  • Bugfix: New BusType s SD and MMC
  • Bugfix: Virtual drives of the Vista's "Volume Shadow Copy" will not get a drive letter assigned
  • Bugfix: Delay on Windows shutdown removed

V4.2.1 (19th April 2008)

  • Bugfix: On autorun.inf, [OnArrival] etc the root of the drive is the working directory again

V4.2.0 (12thApril 2008)

  • Bugfix: problems with NTFS mountpoint longer than 51 chars fixed
  • Bugfix: AutoRun programs did not become the active window under Vista
  • New/Bugfix: unavailable network drives considered
  • New: most settings take effect without restarting the USBDLM service
  • New: Wildcards can be used configuring several parameters
  • New: drives can be completely ignored
  • New: drives and other devices can be removed from or added to the safely remove hardware facility
  • New: the policy "Optimized for performance" can be set for USB drives
  • New: on AutoRun USBDLM variables can be made available to the executed program as environment variables
  • New: on AutoRun programs can be execuded without admin privileges (if the current user is an admin)
  • New: obsolete NTFS mountpoints can be removed on startup

V4.1.0 (19th October 2007)

  • Bugfix: Last line in the USBDLM.INI had been ignored when fewer than two empty line at the end
  • Bugfix: Even with NoMediaNoLetter=0 USBDLM registered for some notifications. Under Vista64 this prevented drives from being 'prepared for safe removal'
  • Bugfix: OnRemoval works now on removal of a card from a card reader
  • Bugfix: USBDLM service no more marked as 'interactive' under Vista which caused warnings in the syslog
  • Workaround: NoMediaNoLetter works under Vista64
  • New: NoMediaNoLetter can be configured more detailed
  • New: NoMediaNoLetter can be forced for certain drives by a section [NoMediaNoLetterInclude] (analog to [NoMediaNoLetterExclude])
  • New: Drive letters in short notation , like Letters=R,X,Y,Z
  • New: User=- as criterion for 'no user logged on'

V4.0.2 (21th August 2007)

  • Bugfix: ListUsbDrives output had Unix style end of line marks (CR only) instead of DOS style (CF+LF) and Notepad cannot show this
  • Bugfix: AutoRun events for drives without a drive letter did work only when an addtional criterion Letter=- was configured
  • Bugfix: Under Windows 2000 partition numbers and balloontips didn't work correctely for hard drives with multiple partitions

V4.0.1 (20th July 2007)

  • Bugfix: ExcludedLetter didn't work
  • Bugfix: ListUsbDrives required admin privileges to show all information

V4.0.0 (15th July 2007)

  • New: new, more simple, but incompatible format for the USBDLM.INI
  • New: drive letters depending on the logged on user's name, group or its admin status
  • New: drive letters depending on some new criteria
  • New: AutoRuns on media instertion (CD/DVD too)
  • New: AutoRuns depending on several criteria (as volume label, drive letter, device id and others)
  • New: AutoRuns on removal request and after removal of a drive
  • New: BalloonTip texts in several languages
  • New: Runs on balloon click
  • New: Explorer default icon and label depending criteria
  • New: Drive events into the Windows system log

V3.4.2 (9th May 2007)

  • Bugfix: multiple wrong drive letters shown in balloon tip when hardware detection incomplete
  • Bugfix: detection of U3 drives improved

V3.4.1 (1st May 2007)

- Bugfix: V3.4.0 bases upon an old codebase - please update to this version. All the new features promised for V3.4.0 now really work.

- Bugfix: open= in autorun.inf works too if the file to execute is located on the attached drive

V3.4.0 (18th April 2007)

  • New: drive letters by size can use the size of the disk instead of the partition
  • New: drive letter depending on the volume label ("drive name")
  • New: USBDLM.INI on the attached drive for non USB drives too
  • New: device IDs for [DriveLettersDeviceIDx] optionally from external file
  • New: settings optionally in the registry instead the INI

V3.3.1 (20th March 2007)

  • Bugfix: Possible crash on machines more that one CPU core or with HyperThreading
  • Bugfix: Errorlevel on installation with -silentinstall was still swapped - now 0 on success
  • New/Fix: Removal of drive letters for NoMediaNoLetter is done with some delay to prevent rare problems with Win Explorer
  • New/Fix: Shell notification about assigned drive letter done with some delay to fix problems with Win Explorer's folder tree view

V3.3.0 (8th Feb. 2007)

  • Bugfix: Errorlevel on installation was swapped - now 0 on success
  • New: Problem with AutoRun under Vista and Windows 2000 fixed
  • New: Installation, deinstallation, start und stop request admin privileges if required
  • New: AutoRun can be secured by a key
  • New: non USB card readers stay untouched - too much trouble
  • New: no assignment of a new drive letter for drives/partitions without a drive letter when it is a TrueCrypt container
  • New: Lots of Finetuning :-)
  • New: instead of the approved HLP format the help is provided as CHM because Vista doesn't support HLP anymore

V3.2.0 (11th Dec. 2006)

  • Bugfix: DeleteMountpointOnRemoval didn't work since V3.0
  • New: 'no letter' can be configured to get rid of certain drives or to prevent users from using them
  • New: drive letters can be configured by drive's device ID sting
  • New: BalloonTips can be disabled for certain drives

Note: This version had a wrong version number '3.1.6.1' until 6th Jan. 2006.

V3.1.0 (6th Nov. 2006)

  • Bugfix: Balloontips didn't work for the second user when Fast User Switching is used under XP and always under Vista
  • Bugfix: Autorun function started programs in the context 'Local System' instead of the current user's context
  • New: drive letters for USB floppy drives

V3.0.3 (22th Oct. 2006)

  • Bugfix: USBDLM V3.0.2 crashed with NoMediaNoLetter=1
  • Bugfix: detection of conflicts with network shares and subst drives didn't work sometimes
  • New: detects card readers with two slots as mults-slot cardreader if they have 'reader' in their device name
  • New: should detect IDE and PCI card readers

V3.0.2 (16th Oct. 2006)

  • Bugfix: USB floppy drives lost their drive letter when attached without inserted media

V3.0.1 (7th Oct. 2006)

  • Executing AutoRun and RunOnArrival the new drive is set as current folder so programs or batch files are found there

V3.0.0 (3rd Oct. 2006)

  • All drive letter settings are applied now on startup too
  • new funktion of section [ExcludedLetters] : These letter will never be used anymore for USB drives
  • Read additional [ExcludedLetters] from a central USBDLM.INI
  • detects and handles U3 autorun drives
  • Execution of the open= line in an autorun.inf on removable drives
  • Global AutoRun on arrival of any USB or Firewire drive
  • Balloon-Tips with information about the assigned letters

V2.4.4 (7th Sept. 2006)

  • Adaption: USB devices with two drives are no longer seen as multi-slot cardreader. The limit is three drives now because there are USB pen drives with two independent drives

V2.4.3 (28th August 2006)

  • Bugfix: Under Windows 2000 you got 'insert disk' error messages when an USB drive without media is attached
  • New/Fix: service name changed from 'USB Drive Letter Manager' to 'USBDLM'

V2.4.2 (16th June.2006)

  • Bugfix: V2.4.1 didn't start on some machines when booting
  • can write a logfile for debugging
  • can act as 'eject server' for the commandline tool EjectMedia

V2.4.1 (11th June 2006)

  • USB floppy drives are ignored
  • problem with double created mount points for multi-slot card readers fixed
  • misspelled service name corrected ('USB drive letter mananger')
  • corrected errorlevels after -install and -silentinstall

V2.4 (21st May 2006)

  • can detect drives which got no mount point at all and assigns the first free letter (if nothing else it configured)
  • can delete mount points (NTFS folders) when the mounted drive is removed
  • mounting to NTFS folders by device name or disk name
  • drive letters for USB CD and DVD drives

V2.3 (5th May 2006)

  • New: can detect network shares of the currently logged on user, so when Windows assigns the letter of a network share USBDLM remounts it to the next letter that is really available, even nothing is configured

V2.2.2 (18th April 2006)

  • Improvement: Works with drives too that need more than 10 seconds between attachment and appearance of the drive letter

V2.2.1 (2nd April 2006)

  • Bugfix: works again under Windows 2000 (V2.2 didn't)

V2.2 (30th March 2006)

  • works with Windows Vista
  • scan for c't USB Agent deactivated by default

V2.1 (19th March 2006)

  • drive letter assignment depending on the USB port for USB drives too that appear as 'Local drive'
  • remount of multislot cardreader's slots to letters too

V2.0 (14th March 2006)

  • drive letter assignment depending on the USB port (for removable drives only)
  • remount of multi-slot card reader's slots to an NTFS folder
  • using empty NTFS folders as mount points instead of drive letters (experimental)

V1.1 (15th Jan. 2006)

  • Some timeouts made longer
  • Detection of USB and Firewire works under Windows 2000 too

V1.1.1 (17th Jan. 2006)

  • Stupid bug in the detection of USB and Firewire fixded that caused an access violation

V1.0 (10th Jan. 2006)

  • Allocation of drive letters depending on the size of the attached drive
  • Exclude list for drive letters to overrule an USBDLM.INI on the newly attached drive
  • Exclude list for volume labels
  • No remounting when an usbagent.inf is on the drive and the c't USB Agent is running
  • Freeware for private and nonprofit educational use only

V0.6 (15th Dec. 2005)

  • Check for a media in drive not longer done thru its volume serial number because drives often get no number by the vendor

V0.5 (24th Oct. 2005)

  • Handles drives only that are removable or hotplug devices

V0.4 (5th Sept. 2005)

  • Handles fixed drives too because there are USB flash drives with a drive type 'DRIVE_FIXED' instead of the usual 'DRIVE_REMOVABLE'

V0.3 (25th Aug. 2005)

  • First public version


Licence

Software licence USBDLM

This licence agreement is based on and bound to German law. This is a translation of the most important facts for our customers and visitors. All programs and documents were created corresponding German law. If there were any infringements of changed or international law it is done unintentional. Please let me know in order to allow corrections.

1. The subject of the contract

The subject of the contract is the enclosed software, the software description and instructions, as well as other associated written material, in the following also called 'software'.

The author makes attentive to the fact that it is not possible to provide software that works error free is in all applications and combinations.

The subject of the contract is therefore only a software, which is usable in the sense of the program description.

2. Granting of a licence

The author grants public schools, universities and other non profit institution of education where the students outnumber all others a free licence.

Other users have 30 days to determine if this product meets their needs. After this time one licence per computer must be ordered or the software must be removed from the computers.

The licence applies to all version numbers of the software now and in the future to the appropriate number of licences.

The volume licences are valid for the particular number of computers within a company or organization.

A Site Licence allows anyone in the organization making the purchase, within a 160 km (100 mile) radius of the purchasing location, to use the software. This includes people from that organization location who are travelling but it does not include people with locations outside of the 160 km radius.

A World-Wide Licence allows anyone in the organization making the purchase, who is on the planet Earth, to use the software.

The author does not supply updates since all updates are offered for download.

The software can be copied and passed on freely, as long as the ZIP or MSI archives is unchanged. Re-packaging is allowed for internal use.

3. No further legal claims

The author is both author and owner of the software, as well as of algorithms and procedures used in this software.

4. No modifications or decompiling

Changes in any files, disassembling, reverse engineering, patching of this software is expressly prohibited.

5. No warranty

I make no guarantee, implied or otherwise as to the accuracy of the documentation or the software's suitability for any purpose. It is a condition of the licence that the user accepts that I'm not responsible for any damages arising by the use or misuse of this software. This includes loss of profit, data, any material losses and their consequential damages: even if I'm informed about the possibility of those damages. I try to fix bugs as soon as possible.


Installation

Unzip the distribution file (USBDLM.ZIP), e.g. to your programs folder (an USBDLM folder is included). On NTFS formatted drives this requires admin privileges.

As result the files should be in a folder like C:\Program Files\USBDLM

Under Vista I suggest to install USBDLM in a different folder than C:\Program Files, because there changes of the USBDLM.INI made by a non elevated user are redirected into the Vista Virtual Store where USBDLM will not read it.

In a folder like C:\Tools\USBDLM there is no problem.

Then enter your prefered configuration into the USBDLM.INI (see below). There is a sample file

included called USBDLM_sample.INI. Either create a new USBDLM.INI or rename the sample file.

On an NTFS formatted drive editing the USBDLM.INI requires admin privileges. Under Vista you should start the Editor elevated, otherwise the USBDLM.INI might be redirected into the Vista virtual store where it has no effect.

If you are logged on with administrator privileges you can simply install the USBDLM service.

_install.cmd

This does not copy any files, it only registers USBDLM as service and starts the service.

Without administrator privileges you will be asked for.

Once installed USBDLM is permanently running as Windows service.

You can uninstall the service using parameter -uninstall:

_uninstall.cmd

This stops the service and unregisters it.

Both can be done without the message box by using

USBDLM -silentinstall

USBDLM -silentuninstall

It returns Errorlevel 0 on success, 1 on failure.

You can stop and start the installed service by means of the NET command:

net stop USBDLM

net start USBDLM

or by means of the _stop and _start command script which are using the USBDLM.EXE.

You can change the drive letter settings in the USBDLM.INI without restarting the service because it's checked for changes each time a drive event occurs.

Since V4.2 most other settings take effect without restarting the service. The only exception are settings which result in registration for device notifications (as NoMediaNoLetter=1 or [OnRemovalRequest]). This is done then when the device in question is reattached or the service is restarted.

See configuration .


Configuration

The desired drive letters or mount points are defined in a text file called USBDLM.INI located in the same place as the USBDLM.EXE.

Modern applications often stores its settings in the Windows registry but I don't like that. INI files are the 'classic' approach. INI files have sections leaded in by names in square brackets, e.g. [DriveLetters] or [BalloonTips]. The settings relevant to that section appear below the section name.

Section names and settings within a section have to be unique.

Since V3.3.1 USBDLM can read its settings from the registry too. It reads from

HKLM/Software/Uwe Sieber/USBDLM

If this registry key exists, then the USBDLM.INI is ignored! Only the log file settings are read from the INI then.

To make USBDLM see changes in the registry change the (Standard) value under HKLM/Software/Uwe Sieber/USBDLM to any different value than before. USBDLM reads the configuration again then.

Here is a sample REG file: http://www.uwe-sieber.de/files/usbdlm_sample.reg

Without a configuration USBDLM solves conflicts between USB drives and network or subst drives.

USBDLM offers several ways to control the drive letter assignments. For each definition there is a section in the USBDLM.INI with up to 9 drive letters.

The value numbers have no relation to anything. The values are just evaluated from low numbers upwards to high numbers.

Most simple sample that works for USB flash drives and USB harddrives:

[DriveLetters]

Letter1=U

Letter2=V

Letter3=W

.

.

Letter9=X

Each letter is checked then and the drive will be remounted to the first one that is available.

It is not possible to let USBDLM mount to more than one mountpoint.

If you want to configure a single letter only, then you can omit the number:

Letter=X

This is not made to be used mixed with numbered lines but if you do, then the line without number is read first.

Since V4.1 you can use a short notation in lines "Letters=". This works for drive letters only, not for NTFS mount points!

Samples:

[DriveLetters]

Letters=A,W,X,Y,Z

You can use ranges too:

; W-Z is expanded to W,X,Y,Z

[DriveLetters]

Letters=A,W-Z

; Z-W is expanded to Z,Y,X,W

[DriveLetters]

Letters=A,Z-W

And you can omit the comma:

[DriveLetters]

Letters=AWXYZ

Prioriy

First "Letters" is read, then "Letter" and finally Letter1 to Letter9.

No letter / remove the drive

To hide a drive (remove it's drive letter) configure a single minus char:

Letter=-

To remove a drive (prepare it for safe removal) configure two minus chars:

Letter=--

To get partition number 1 on an USB disk at X: and hide partition 2:

[DriveLetters]

Letter1=X

Letter2=-

But it works only if X: is avialable. Otherwise all partitions get no letter.

To hide partition number 1 on an USB disk and get partition 2 at X:, this will not work:

[DriveLetters]

Letter1=-

Letter2=X

Why? For each drive the configured letters are checked and the first available one is used. "No letter" is always available, so Letter2 is never reached. The drive letter of each partition is removed.

Use Drive Letters by Partition Number in this case.

Drive letters depending on certain criterions

To apply a section to certain drives only, you can define criterions in this section. If you use multiple sections then they must be numbered. The section are tested from [DriveLetters1] to [DriveLetters99] and finally[DriveLetters] (without a number). So, configure special cases at low numbers and more general ones at higher numbers and the most general with the highest number or without a number.

USBDLM uses the drive letter from the first section that fits only. There is no fallback to another section if all configured drive letters in a section are in use!

Sample to lock drives above 10 GB and get smaller drives at U, V and W:

;remove letter above 10GB

[DriveLetters1]

MinDiskSize=10GB

Letter=-

;all others at U, V, W

[DriveLetters2]

Letter1=U

Letter2=V

Letter3=W

or in short notation:

[DriveLetters2]

Letters=U,V,W

There is a detailed description under Drive letters depending on certain criterions .

General Settings

Mounting to NTFS folders

Instead of letters you can set up empty folders on NTFS drives as mount points too, see Mounting to NTFS folders


Mounting to NTFS folders

Instead of letters you can set up empty folders on NTFS drives as mount points too.

If the target folder doesn't exist, then USBDLM creates it, but the final part only. Sample:

You configure 'C:\_USB-drive\flash_1'. Then at least 'C:\_USB-drive' must exist.

Once created the folder can be renamed. USBDLM accepts this as long as it is in the same base folder ('C:\_USB-drive' in the previous sample).

When using NTFS folders as mount point, you can use the drive's device name or disk name for the

folder name:

Configure '%DevName%' or '%VolumeLabel%' which USBDLM replaces with the drive's device name or the volume label ('disk name') resp.

Sample: Assumed the drive's Friendly Name is 'Corsair Flash Voyager'.

[DriveLetters]

Letter1=C:\_USB\%DevName%

Then USBDLM would create in C:\_USB the folder 'Corsair Flash Voyager' and remount the drive to it.

'%DevName%' and '%VolumeLabel%' are some of the USBDLM variables .

In contrast to drive letters, folders used as mount points are not removed when the mounted drive is removed. To let USBDLM remove the folder set DeleteMountPointsOnRemoval=1:

[Settings]

DeleteMountPointsOnRemoval=1

Of course renaming the folder lasts then until the drive is removed only...

If the drive is removed while the USBDLM service is not running, e.g. after Windows has been shutted down, then the removal of the folder fails of course. This can be done on next startup or when a user logges on. Configure the folders which contains the NTFS mountpoints.

Sample matching to the DriveLetters section sample above:

[DeleteUnusedNtfsMountpoints]

Folder1=C:\_USB

Folder2=

Mounting into NTFS folders brings some drawbacks: Several drive specific functions are no longer available in the Windows Explorer like autorun, eject, defrag, format...

If the drive letters appear insistently again, then another software is working which checks the drive letters and "repairs" them.

The "U3 launchpad" of U3 flash drives is known for doing so when it's started (the U3launch.exe on the fake CDROM drive).

When a file is deleted in the Windows Explorer then it is moved by default to the Recycle Bin which is a folder in the root of the drive. Only the reference to the file is moved, the contents stay untouched.

But when a file is deleted that is located on a drive that is mounted into an NTFS folder, the moving does't work, the file must be copied then which may take a while. Deleting a folder to the Recycle Bin doesn't work at all.

So hold down the Shift key when you delete a file to skip the recycle bin or deactivate the recycle bin for the host drive.

In the save removal dialog NTFS mount points are unsupported, so you have no idea which drive is which there.

Conclusion: Do not use NTFS folders as mount points without a good reason.

To get rid of a multislot cardreader's drive letters, use USBDLM's No Media No Letter feature.


Settings

Even the section [Settings] is mentioned again and again all settings have to be together within the one and only section [Settings]! There can be only one...

Most settings take effect immediately.

Check drive letters on startup

All settings are applied on startup too to catch internal card readers and drives that are attached while booting.

If USBDLM shall not do so:

[Settings]

CheckLettersOnStartup=0

Upcoming network drives cannot be considered here because they do not exist at this time and USBDLM cannot look into the future. Therefore network drives that shall be considered must be configured in section [ExcludedLetters] .

Check drive letters on user logon / user switch

Under XP and higher all settings are applied on user logon to take user depending settings effect when a different user loggs on.

If USBDLM shall not do so:

[Settings]

CheckLettersOnLogon=0

Windows 2000 does not support the required notification messages, so USBDLM cannot check drive letters on user switches.

AutoRuns on user logon / user switch

Configured AutoRun events are executed by default only on arrival of a drive or on insertion of a media.

If USBDLM shall do this on user logon or user switch:

[Settings]

AutoRunOnLogon=1

With an auto logon the USBDLM service may be not yet started on logon, so it misses the logon event. Workaround: When there are fewer than two minutes since the system is started and the a user is already logged on when the USBDLM services starts, then the AutoRuns are executed too.

Delete NTFS folders on drive removal

In contrast to drive letters, folders used as mount points are not removed when the mounted drive is removed. To let USBDLM remove the folder set DeleteMountPointsOnRemoval=1:

[Settings]

DeleteMountPointsOnRemoval=1

External Mount Events

When drive letters are changed manually then USBDLM is not notified by Windows because it's a services. If required USBDLM can create an invisible window to get these notifications (service restart required):

[Settings]

ExternalMountEvents=1

Policy "Optimize for performance" for USB drives

Under XP and higher for USB drives there are the policies "Optimize for quick removale" (default) and "Optimize for performance". For the latter XP pretends to activate a write cache. But it does not when the drive is a "Removable drive" as most of the USB flash drives are.

The only effect is that it's allowed then to format them with the NTFS file system. And with NTFS, XP and higher indeed activate a write cache, also on other computers because the write cache on NTFS drives is independent of the policiy. It's all about the permission to format a "Removable drive" with NTFS.

For FAT formatted USB harddrives "Optimize for performance" indeed activates a write cache. With NTFS there is always a write cache.

USBDLM can set the policy "Optimize for performance" for all USB drives:

[Settings]

OptimizeUsbDrivesForSpeed=1

For drives attached for the first time it works immediately. Existing drives must be reattached two times.

Debug Information

If there are problems I may figure out what is wrong by reading the debug logs which USBDLM writes.

It can write a log file or live output that can be grabbed by SysInternals DebugView

To activate the log file set WriteLogFile=1, for the live output WriteDebugInfo=1.

To control how detailed the output is, set the LogLevel=1 to 5, 3 is usually good enough.

The file is _USBDLM.LOG in the root folder of the Windows drive by default but can be changed:

[Settings]

WriteDebugInfo=1

LogLevel=3

WriteLogFile=1

LogFile=C:\USBDLM.LOG

Since V4.2 no restart is required to take effect.

On startup of the service an existing USBDLM.LOG is renamed into USBDLM_BAK.LOG, an existing USBDLM_BAK.LOG is deleted.


Migration from V3.x

  • Instead of using for each criterion its own section type now there is only one section type, [DriveLettersX]. In each section any criterion, even multiple criterions can be used.
  • The order of evaluation isn't fixed anymore, it depends on the numbering only
  • USBDLM.INI on the attached drive is discontinued but can be easily emulated, see Configuration .
  • RunOnArrival is discontinued but can be emulated by means of the new AutoRun facility
  • [DriveLettersMultiSlotCardReader] is discontinued, multislot cardreaders are handled now as every other removable USB drive. A special handling can be achieved thru the DeviceType .
  • All sections are good for USB drives only. For other types of drives, configure a BusType .

Samples for the migration

Old (V3.x)                             New (V4.0+)

---------------------------------------------------------------------------

USBDLM.INI on new drive                ;put this in the global USBDLM.INI

                                       [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

;an USB drive:

[DriveLettersDeviceID1]                [DriveLetters40]

DeviceID1=Corsair Flash Voyager        DeviceID1=Corsair Flash Voyager

Letter1=X                              Letter1=X

;an ATA drive:

[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

SuppressWindowsBalloons                SuppressWindowsBalloons

[NoBallonsFor]                         [BalloonTipsExclude]

[Settings]                             [Settings]

AutoRunEnabled=1                       AutoRunInf=1

EjectServer                            discontinued


Excluded Letters

Letters configured in section [ExcludedLetters] are not accepted being used for local drives.

They overrule letters configured in external INI files too.

Here you should enter drive letters used as network shares or as subst drives. This way the USBDLM service can consider them even they are not created yet, e.g. at boot or logon time. Furthermore drives which are created later, as TrueCrypt drives, should be configured here.

Do not configure letters of local drives here, USBDLM might remount them!

Alternatively you can just configure enough drive letters in the DriveLetters sections.

In contrast to other config sections here are Letters1 to 26 read because some users reported that 9 letters are not enough.

Sample to exclude F and G:

[ExcludedLetters]

Letter1=F

Letter2=G

Letter3=

Or short:

[ExcludedLetters]

Letters=F,G

In this section only letters are allowed.

If you want to admin the settings from a central point, the USBDLM.INI can be read from a network share:

[Settings]

ServerINI=\\192.168.1.1\USBDLM_share\usbdlm.ini

For this USBDLM.INI only section [ExcludedLetters] is read!

The file is read from the context 'Local System' of the computer which the USBDLM service is running on with null credentials. So the share should have read access granted to 'Everyone' and furthermore the share must be allowed to be a null session share:

http://www.uwe-sieber.de/nullsessionshares_e.html

For network drives only an UNC path works here because on system startup the network drive letters are no yet created and furthermore they exist in the context of the interactive user only under XP and higher.

To avoid delays it's read on startup of the USBDLM service only.

Letters1 to 26 can be used in addition.


Default Letters

New Default Letters

In section [DriveLetters] you can configure new default letters for USB drives. Sample:

[DriveLetters]

Letter1=U

Letter2=V

Letter3=W

Or short

[DriveLetters]

Letters=U,V,W

Because there are no criterions in the section, only the default criterions are tested. These are:

BusType=USB

DriveType1=REMOVABLE

DriveType2=FIXED

This is for easier config, for compatibility with USBDLM V3.x and because of the program's name USB drive letter manager...

You can make USBDLM read drive letters from an external INI file too, e.g. on the newly attached drive:

[DriveLetters]

Letters=%drive%\usbdlm.ini

%drive% is an USBDLM variable which is replaced with something like "X:".

Both ways can be used together, the external file has precedence:

[DriveLetters]

Letters=%drive%\usbdlm.ini

Letter1=U

Letter2=V

This makes USBDLM read drive letters from the USBDLM.INI on the drive first and then the others.

In the external INI file only one simple [DriveLetters] section is valid as shown in the first sample.

To make a section responsible only when the USBDLM.INI on the drive is present we need the FileExists criterion:

[DriveLetters10]

FileExists=%drive%\usbdlm.ini

Letters=%drive%\usbdlm.ini


No Media No Letter

The typical 20 in 1 card reader takes for each slot one drive letter, if you have a card of this type or not. No one knows which drive letter is assigned to which slot...

So, let USBDLM remove the drive letters and let it assign one when a card is inserted.

[Settings]

NoMediaNoLetter=1

To take effect the device in question must be reattached or the USBDLM service must be restarted.

Under Windows 2000 the required notification messages do not exist. Since V4.2 USBDLM can check once a second for a media. This consumes some CPU time, about some seconds per our.

NoMediaNoLetter=0 -> no drive

NoMediaNoLetter=1 -> multislot-cardreaders only

NoMediaNoLetter=2 -> singleslot-cardreader too

NoMediaNoLetter=3 -> all 'removable' drives

It does not work with floppy drives or CD-ROMs.

There is no reliable procedure to identify "singleslot-cardreaders". USBDLM assumes a removable USB drive being a cardreader when its device name contains characteristic words as "reader", "card", "flash" and some others. If your card reader isn't detected as such then either set NoMediaNoLetter=3 or use section [NoMediaNoLetterInclude] (see below).

If the drive letters appear insistently again, then another software is working which checks the drive letters and "repairs" them.

The "U3 launchpad" of U3 flash drives is known for doing so when started (the U3launch.exe on the fake CDROM drive).

Workaround: No admin privileges for the U3 launchpad, then it cannot assign drive letters. So either work as restricted user or let the U3launch.exe start restricted by USBDLM, like this:

[OnArrival]

DriveType=CDROM

FileExists=%drive%\u3launch.exe

open=FileExists=%drive%\u3launch.exe

restricted=1

Exclude devices from "no media no letter" function

To make this function work, the USBDLM service has to register for some notification messages. This is done for all drives types configured in the NoMediaNoLetter value. Some devices make trouble here, they appear to have no media when they are just attached or USBDLM get flooded by wrong removal messages.

If a device makes trouble then it can be excluded from being handled by NoMediaNoLetter by it's device ID.

Sample to exclude the Apple iPod:

[NoMediaNoLetterExclude]

DeviceID1=ven_apple&prod_ipod

This is already build in because the iPod is a known trouble device...

Furthermore devices with "Iomega", "ZIP" or "JAZ" are excluded because I think it's just not appropriate for such floppy like drives.

"device ID" means an at least 8 characters long part of either the "Drive DevID", "Ctrl DevID" or the "Friendly Name" as shown by the ListUsbDrives tool. Or use Wildcards .

Force devices being handles by the "no media no letter" function

Sample to make USBDLM handle the Apple iPod (nonsense, just a sample):

[NoMediaNoLetterInclude]

DeviceID1=ven_apple&prod_ipod


Letters by Criteria

Drive Letters depending on Criteria

Since V4.0 you have complete freedom of using many different criteria.

You need then several sections [DriveLettersX], in which the different criteria are defined together with the target drive letters.

The sections are tested from [DriveLetters1] to [DriveLetters99] and finally [DriveLetters] (without a number). The first sections whose criteria fit to the drive is used. So, configure special cases at low numbers and more general ones at higher numbers and the most general with the highest number of without a number.

I suggest to use the number in steps of 10, so you can later easily insert sections.

The section and value numbers have no relation to anything. Section and values are just evaluated from low numbers upwards to high numbers, that's all.

Defauld criteria are:

BusType=USB

and

DriveType1=REMOVABLE

DriveType2=FIXED

This means that a section without criteria is appropriate for all USB drives but not USB floppy drives and USB CDROM drives.

In contrast to USBDLM V3.x multislot cardreaders are not excluded here.

If a different BusType or DriveType is used, then the default value is not used anymore.

Some simple samples:

1. FireWire drives at F, USB drives above 10GB at U, all other USB drives at W or Z:

;FireWire at F:

[DriveLetters10]

BusType=FireWire

Letter1=F

;USB >10GB at U:

[DriveLetters20]

MinDiskSize=10GB

Letter1=U

;all other USB drives at W: or Z:

[DriveLetters]

Letter1=W

Letter2=Z

2. USB multislot cardreader at L, M, N, O; all other USB drives at W or Z:

;MultiSlotCardReader at L:, M:, N: and O:

[DriveLetters10]

DeviceType=MSCR

Letter1=L

Letter2=M

Letter3=N

Letter4=O

;all other USB drives at W: or Z:

[DriveLetters]

Letter1=W

Letter2=Z

Multiple criteria of the same type can be used with numbers. Then one of them must match.

If multiple types of criteria are used, one of each type must match.

Sample for USB and FireWire drives above 10GB at F:

[DriveLetters10]

BusType1=USB

BusType2=FireWire

MinDiskSize=10GB

Letter1=F

Sample for a CF-Cards in a PCMCIA slot at P:

[DriveLetters10]

BusType=ATA

DeviceID=PCI\VEN_1217&DEV_7135

Letter1=P

The real device ID is shown by ListUsbDrives (for ATA drives the "Ctrl2 Dev ID", otherwise the "Ctrl Dev ID").

All available criteria are described in the following sections.


Letters by Drive Size

Drive Letters by Drive Size

The drive size can relate to the size of the whole disk or a single partition.

You can use units as KB, MB or GB, otherwise the unit is single bytes!

A KB means 1,000 Bytes, an MB 1,000,000 Bytes and so on.

A typical 40GB drive usually has a size of a bit above 40GB, a single partition on it usually a bit below 40GB.

So it makes sense to use a bit lower values as 39GB.

Only whole numbers are allowed.

A minimum or maximum size can be used, so available config items are:

MinVolumeSize

MinDiskSize

MaxVolumeSize

MaxDiskSize

Sample:

;USB drives above 40GB at U:

[DriveLetters10]

MinDiskSize=40GB

Letter1=U

;USB drives with including 10GB and more at X:

[DriveLetters20]

MinVolumeSize=9GB

Letter1=X


Letters By Device ID

It's a bit hard to configure...

Sample:

[DriveLetters10]

DeviceID1=USB\VID_067B&PID_2517

DeviceID2=USB\VID_1234&PID_5678

Letter1=U

[DriveLetters20]

DeviceID1=USB\VID_9876&PID_5432

Letter1=X

Or a bit less cryptic using the device's friendly name:

[DriveLetters10]

DeviceID1=Corsair Flash Voyager

Letter1=V

When a DeviceID is configured then the BusType can be omitted for non USB drives.

You can determine the device ID by means of the ListUsbDrives tool. The ListUsbDrives_To_Notepad command script redirects its output to a file and opens it in the Windows Editor.

As Device-ID you can use the 'Drive DevID', 'Ctrl DevID' or the 'Friendly Name'.

An at least 8 characters long part from start is enough. Or use Wildcards .

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_VOY...

Ctrl  DevID    = USB\VID_067B&PID_2517\6&12115AD4&2&1

Ctrl2 DevID    = USB\VID_067B&PID_2515\5&1BBE8508&0&1

Volume DevName = \Device\Harddisk4\DP(1)0-0+25

Disk DevName   = \Device\000000ae

Device Number  = 4

Friendly Name  = Corsair Flash Voyager

USB Version    = 2.0 (high speed)

USB Serial     = ---

USB Port Name  = 5-1-1

If you deal with a large number of drives then you can use an external file with the device IDs. This saves the numbering.

[DriveLetters10]

DeviceIDs=C:\USBDLM_DeviceIDs.txt

Letter1=V

In the text file there are just one device ID per line. Comments are lead in by a semicolon, empty lines are allowed.

Sample:

;admin's drives

USB\VID_067B&PID_2517

USB\VID_1234&PID_56789

;chef's drives

USB\VID_9876&PID_5432

USB\VID_4567&PID_4321

;othters

USB\VID_3456&PID_3543

USB\VID_3456&PID_1432

The string compare is done case insensitive. The whole configured string must be found in the drives device ID to give a match.

Using the USB hardware serial number

Windows puts the serial behind vendor and product ID in the string. In the sample above the device ID was

'USB\VID_067B&PID_2517\6&12115AD4&2&1'.

But this is one of the devices wihout a serial. The appearance of the & char means that this is a generated number, not the USB serial.

For devices with serial you can use the whole device ID or just the serial.

[DriveLetters10]

DeviceID1=1234567890ABCD

Letter1=V

If you configure then Letter1=-- for all other USB drives in a higher section or section [DriveLetters] then you have the one and only functional USB drive.

If USB floppy and CD drives shall be blocked too then:

[DriveLetters]

DriveType1=floppy

DriveType2=cdrom

DriveType3=removable

DriveType4=fixed

Letter=--

Or short:

[DriveLetters]

DriveType=any

Letter=--


Letters by USB Port

Drive Letters by USB Port

Letters can be defined per USB port too but it's a bit hard to configure...

[DriveLetters10]

PortName=3-2

Letter1=U

Letter2=R

Letter3=

;for multiple ports as the ports of an hub connected to 5-1

[DriveLetters20]

PortName1=5-1-1

PortName2=5-1-2

PortName3=5-1-3

PortName4=5-1-4

Letter1=X

Letter2=

Letter3=

Or short using Wildcards :

;for multiple ports as the ports of an hub connected to 5-1

[DriveLetters20]

PortName1=5-1-?

Letter1=X

Letter2=

Letter3=

First the physical USB ports have to be identified for the configuration. You get the port names by attaching a drive to each port to configure. Then run the ListUsbDrives tool. ListUsbDrives will show something like this for each USB drive:

MountPoint  = U:\

Disk Name   = 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

For this drive 3-2 is the setting for 'PortName' we need. If there is an USB hub in between then a typical port name is 3-2-1, with two hubs 3-2-1-1 and so on. USB hubs with 7 ports can be in fact two cascaded 4 port hubs, so 4 of the 7 ports get an additional step in the USB tree.

With USB 2.0 the physical USB ports have two incarnations - one for USB 1.1 and one for USB 2.0.

Run Microsoft UVCView to get a tree view of your USB ports and devices to see what I mean.

There is no way to determine which USB 1.1 incarnations shares its physical ports with which USB 2.0

incarnation. So the only way to get the same letter for USB 1.1 and USB 2.0 drives on the same

port is to run ListUsbDrives twice - one time with an USB 1.1 drive attached and one time with

an USB 2.0 drive attached.

Of course, if you change your USB hub assignments, you'll have to do all this over, too.

Under Windows 2000 especially USB host controllers on PCI or PCMCIA add on cards often appear a bit 'different' in the device tree. ListUsbDrives and USBDLM are unable to determine the USB port names here.


Letters by Volume Label

Drive Letters by Volume Label

The Volume Name (also called Drive Name) is the text shown in the drive's properties dialog (right click the drive, "Properties"). The label shown in the Windows Explorer can be the volume label but it also can be a setting from the Windows Registry. If you change the label by single clicking the drive or by pressing F2, it depends on where the current lable comes from, which one is changed.

To see and change the real volume label, right-click the drive in the Windows Explorer and select Properties.

Sample:

[DriveLetters10]

VolumeLabel1=Monday

VolumeLabel2=Wednesday

VolumeLabel3=Friday

Letter1=U

[DriveLetters20]

VolumeLabel1=Tuesday

VolumeLabel2=Thursday

VolumeLabel3=Saturday

Letter1=X

Drives named Monday, Wednesday or Friday get U and drives named Tuesday, Thrursday or Saturday get X.

You can use Wildcards :

[DriveLetters10]

VolumeLabel1=Backup?

Letter1=U

This would fit for a VolumeLabels Backup1, Backup2 etc.


Letters by Drive Type

Drive Letters by Drive Type

The following drive types are defined in USBDLM:

FLOPPY      Floppy drives

REMOVABLE   non floppy drives with removable media as USB flash drives and card readers)

FIXED       Hard drives

CDROM       CD/DVD drives

UNKNOWN     unknown, some card readers in notebooks

RAMDISK     RAM drives (many RAM drives appear as FIXED, check with ListUsbDrives)

ANY / ALL   all types (use it carefully!)

Sample for USB-CD-ROMs at R:

[DriveLetters10]

DriveType=CDROM

Letter1=R

If no DriveType is used then the default types are used. These are REMOVABLE or FIXED.

If all drive types shall be valid for a section, then you can use "ALL".

Sample to get USB drive letters for members of the admins group only:

[DriveLetters10]

UserGroup=Administrators

Letter1=X

Letter2=Y

Letter3=Z

;no USB drives for all others

[DriveLetters90]

DriveType=ALL

Letter1=--

Do not configure like this:

;all others

[DriveLetters90]

BusType=ALL

DriveType=ALL

Letter1=-

This would remove the drive letters of all drives, USB or not, because of BusType=ALL.

See Letters by active User for more information.


Letters by Device Type

The device type is something USBDLM specific to give some special devices a special handling.

Defined types are:

  • MSCR            -> Multislot-Cardreader
  • U3              -> U3 flash drive or a harddisk with virtual CD-ROM drive e.g. for installing/starting encryption software
  • Floppy          -> Floppy drive
  • FlashCardReader -> drives with 'Card' or 'Flash' in the device name
  • TrueCrypt       -> a drive that is used as TrueCrypt container (or as container for any other encryption software)

The ListUsbDrives tool shows the types.

Sample for multislot cardreader at L, M, N, O

[DriveLetters10]

DeviceType=MSCR

Letter1=L

Letter2=M

Letter3=N

Letter4=O

Sample for multislot cardreader in an NTFS folder using the device name:

[DriveLetters10]

DeviceType=MSCR

Letter1=C:\CardReader\%DevName%

It creates there one subfolder for each slot using the device name of the slot. Better card readers have 'talking' drive names like 'USB2.0 CF_MD', 'USB2.0 SD_MMC' and so on. Slots of junk readers have all the same, non talking name like 'USB USB', 'Generic USB', 'General Flash Disk'...

By default the folders are not removed when the card reader is disconnected. USBDLM removes them when DeleteMountPointsOnRemoval=1 is set:

[Settings]

DeleteMountPointsOnRemoval=1

A multislot cardreader is seen as such if it has three or more independent slots. Furthermore devices with two slots and 'reader' or 'card' and 'flash' in the device name.

Non-USB reader often seen in notebooks are not seen as MSCR. Configure it using the device ID then.

Sample to remove the drive letter of drives that are used as TrueCrypt container:

[DriveLetters10]

DeviceType=TrueCrypt

Letter1=-

Sample to hide U3 AutoRun CD-ROMs:

[DriveLetters10]

DriveType=CDROM

DeviceType=U3

Letter1=-

U3 is a standard fur USB drives which allows to have all programs, data and settings on this drive and work with it on any computer without leaving any traces there.

For that there is the 'U3 launchpad' on the drive which shall start automatically when the drive is attached. But Windows executes the open= line in the an autorun.inf only on CD drives. Therefore these U3 drives contain a fake CD-ROM drive with the autorun part. This is the 'U3 autorun drive' mentioned above.

If you dont need this, then you can configure an NTFS folder for it. Then you get rid of its autorun and you save a drive letter. Or just configure nothing in this section and remove the drive letter in the Windows disk management.

To remove the U3 functionality completely and irreversiblely then use the U3 uninstall tool:

http://u3.com/uninstall

USBDLM sees all USB devices as U3 which have a CDROM and a data drive. This can be the case too on drives with encryption software or on promotion thumb drives.

Meanwhile you find such nasty CD-ROM drives on WLAN sticks and printers too for selfinstalling

drivers... USBDLM does not recognize such drives as fake CD-ROMs so far.


Letters by Bus Type

Drive Letters by Bus Type

Bus Typ means the way a drive is attached to the computer, like USB, FireWire, SCSI ect.

If no BusType is configured then the default BusType=USB is used. This means that by default a section fits for USB drives only. For non USB drives a BusType must be configured.

ListUsbDrives shows the BusType of all drives if it's started with parameter -a (like all). That's what the ListUsbDrives_To_Notepad.cmd does.

The BusTypes are:

USB

FireWire

SCSI

ATAPI

ATA

SSA

Fibre

RAID

iSCSI

SATA (2003 Server, XP-64 and Vista)

SAS (2003 Server, XP-64 and Vista)

SD (some internal notebook SD cardreaders)

MMC (some internal notebook MMC cardreaders)

Unknown (some internal notebook cardreaders, virtual drives, legacy floppies)

ANY or ALL (any BusType - use it carefully, it might remount your IDE or SATA drives!)

Under XP SATA drives never have the BusType=SATA, it's not defined there. They will have ATA or SCSI as BusType.

Use bus types with care, if you configure nonsense then you will get it!

For SATA drives it's better to configure an additional DeviceID because it's unique.

Sample for USB and FireWire drives larger than 100GB at X:

[DriveLetters10]

BusType1=USB

BusType2=FireWire

MinDiskSize=100GB

Letter1=X

Sample for ATA disk with DeviceID 'IC35L120AVV207-0' at X:

[DriveLetters10]

BusType=ATA

DeviceID1=IC35L120AVV207-0

Letter1=X

Sample for virtual CD drives created by Elby CloneDrive on V, W, X, Y:

[DriveLetters10]

BusType=SCSI

DeviceID=ELBY CLONEDRIVE

Letters=V-Y


Letters by Partition Number

Drive Letters by Partition Number

Logical drives on Harddisks have a partition number, the ListUsbDrives tool shows them.

Sample for hiding partition number 2 on an USB harddrive with DeviceID USB\VID_04B4&PID_6830\1234567890AB:

[DriveLetters10]

DeviceID=USB\VID_04B4&PID_6830\1234567890AB

PartitionNumber=2

Letter1=-

Do not configure Letter=-- because this would remove the whole device!

The PartitionNumber is checked on Fixed and Removable drives only. On Removable drives the number is always 1 because Windows since Windows 2000 does not support multiple partitions on 'removable' drives.


Letters by Existence of a File

Letter by Existence of a File

[DriveLetters10]

FileExists=%Drive%\drive_a.id

Letter1=A

This sample works for USB drives only because of the default value BusType=USB.

To make it work with other types too, just configure them as additional BusTypes:

[DriveLetters10]

BusType1=USB

BusType2=FireWire

BusType3=SCSI

FileExists=%Drive%\drive_a.id

Letter1=A

Since V4.2 you can use wildcards. The evaluation is done by Windows, therefore it's different form the USBDLM internal wildcards .

Only the given folder is scanned, no sub folders!

Sample to start the "ImageViewer" if a JPG file or the folder "DCIM" (as created by all digicams) is found and the "VideoPlayer" for AVI and MPG:

[OnArrival10]

FileExists1=%Drive%\*.jpg

FileExists2=%Drive%\DCIM

open=C:\Programme\ImageViewer\ImageViewer.exe %Root%

[OnArrival20]

FileExists1=%Drive%\*.avi

FileExists2=%Drive%\*.mpg

FileExists3=%Drive%\*.mpeg

open=C:\Programme\VideoPlayer\VideoPlayer.exe %Root%


Letters by active User

Drive Letters by active User

The active user can be configured using its user name or the name of its local group.

To use groups defined on a server the USBDLM service has to start itself in the context of the logged on user. This USBDLM instance then determines the groups and reports them to the USBDLM service. This is done immediately after logon so the user has no chance to break in the communication between service and user instance. Under Windows 2000 it's more critical because here the USBDLM service has to wait for the explorer.exe, so an very advanced user might be able to breach the communication.

Use server groups only if required.

To activate reading server groups set

[Settings]

NetUserGroups=1

Sample for the user name:

;drive letter for the parents

[DriveLetters10]

UserName1=Homer

UserName2=Marge

Letter1=X

Letter2=Y

;no drives for the kids

[DriveLetters20]

UserName1=Bart

UserName2=Lisa

UserName3=Maggie

DeviceType=ANY

Letter1=-

DeviceType=ANY is required to remove the drive letters of USB floppy and USB CDROM drives too.

Sample for group names:

[DriveLetters10]

UserGroup=Administrators

Letter1=X

Letter2=Y

;no USB drives for all others

[DriveLetters20]

Letter1=-

Or reverse:

;no drives for normal users

[DriveLetters10]

UserGroup1=Users

UserGroup2=Guests

Letter1=-

;all other users can

[DriveLetters20]

Letter1=X

Letter2=Y

Or using the user's admin state

[DriveLetters10]

UserIsAdmin=1

Letter1=X

Letter2=Y

;no drives for non admins

[DriveLetters20]

UserIsAdmin=0

DriveType=ALL

Letter1=-

To make a certain USB drive work even a non admin is logged on, put a section with the drive's device ID in between,

see Letters by Device ID .

;this drive always works because section 15 is tested before section 20

[DriveLetters15]

DeviceID=USB\VID_067B&PID_2517

Letter1=X

Letter2=Y

You can use Wildcards . For instance admin* is good for Administrator and Admin.

While no user is active, UserName and UserGroup are empty, therefore no sectition which has UserGroup or UserName defined will be ever used then. UserIsAdmin is assumed as 0 while no user is active.

To make a section valid for "no user logged on" UserName=- or UserGroup=- can be configured.


Priorities

Up to V3.x the priorities of the sections where fixed. With version 4 you have a free hand.

USBDLM always checks from [DriveLetters1] to [DriveLetters99] and finally [DriveLetters].

The first section that fits to the drive is used (only this one). So configure from the special cases upwards to the more general.

If the drive got the letter of a network share, USBDLM remounts it to the next available letter.

No need no configure anything for this function. If no letter is available then the drive is unmounted.

Finally, if the drive has no mount point at all, USBDLM mounts it to the next available letter if there is one.


AutoRun

Windows AutoRun

The Windows AutoRun facility is not everybody's taste: Silly questions, mindless searching, tendency to it's own live and just not working...

So, just deactivate it, best using my tool AutoRunSettings .

Microsoft TweakUI can do it too on first view but it cannot deactivate AutoRun for hard drives and it activates AutoRun for network and unknown drives because it completely ignores the Windows default values.

USBDLM's AutoRun functions

USBDLM has two mechanisms to start programs on arrival of a drive and on insertion of a media (card, disk, CD/DVD), see below.

By default the command is executed in the context of the active user. If there is no user active, the commandline is not executed.

In contrast to Windows' AutoRun this works too if the drive is mounted into an NTFS folder or if it got no mount point at all.

By holding down the Shift key the execution can be skipped.

USBDLM supports only the starting of executable files (EXE, COM, BAT, CMD, LNK etc), document files can work but there is no guarantee. E.g.

open=test.txt

may not work. Use then something like

open=notepad test.txt

instead.

AutoRun events on insertion or removal of a cardreaders's media configured for the first time may work after reattaching the device or after a restart of the USBDLM service only.

The USBDLM variables can be made available to the executed program as environment variables:

[Settings]

UsbdlmVariablesToOpenEnvironment=1

Both mechanisms described below can be executed on user logon to deal with drives present at startup.

[Settings]

AutoRunOnLogon=1

1. autorun.inf on the attached drive

The autorun.inf is a Windows mechanism. One function is the open= line to execute a commandline when a drive is attached. With each Windows version this has been limited more an more. Unter XP this works with CD-ROM drives only whithout further user inquiry. This is the reason for such great solutions as U3 drives or selfinstaller devices which are using a fake CD-ROM drive.

Under Vista even this works after asking the user only.

USBDLM can execute the open= line in an autorun.inf on removable drives, hard drives, CD/DVD and Floppies

drives.

Sample for drives with removable media:

[Settings]

AutoRunInf=1

Values for other types, add if required:

Removable: 1

Hard drives: 2

CD-ROMs 4

Floppies 8

Unknown 16

Sample for removable drives, hard drives and CD-ROMs:

[Settings]

AutoRunInf=7

Floppy drives have no insert notification, therefore AutoRun works (if at all) only when an external Floppy with a disk present is attached to the system.

Sample for opening a Windows Explorer window thru an autorun.inf on the attached drive or inserted media:

[Autorun]

open=explorer .

openstyle=max

A window style can be suggested using an openstyle= line, this is USBDLM specific and not supported by Windows' autorun.inf.

Many programs consider this (as the Windows Notepad), other do not (as the Windows Calculator).

The available styles are:

max        maximized

min        minimized

hidden     hidden

noactivate normal, but the window is not activated, it does not get the focus

If required a delay can be added in milliseconds. The maximum value is 60000:

delay=2000

Of course the autorun.inf can be easily abused. Therefore USBDLM can protect this by a key:

AutoRunKey=MySecretKey

Only if the same line is found in the autorun.inf on the drive the open= line is executed.

Another security option is to execute the AutoRun without admin privileges:

[Settings]

AutorunInfRestricted=1

If the current user isn't an admin, then this setting makes no difference.

Of course an SETUP.EXE started from a CD drive may then not have enough privileges to install its software...

2. Global AutoRun settings in the USBDLM.INI

[OnArrival]

open=calc.exe

This would start the Windows Calculator when an USB drive is attached or a media is inserted into a drive.

The command can be executed without admin privileges (no difference if the active user is no admin):

[OnArrival]

open=calc.exe

restricted=1

or with full system privileges in the context 'local system':

[OnArrival]

open=calc.exe

system=1

Under Windows Vista you will never see this program because it's running in a different session. Under XP this is true too when Fast User Switching in activated an the current user is not the first one. Using this is useful when system tools shall be started but the user is a restricted one as shown below in Sample 6.

As parameter for the program you can use variables as %drive% for the drive ( as X: ) or %root% for its root folder ( as X:\ ).

This can be made depending on criterions as described under Drive letters depending on certain criterions .

An additional criterion is the volume's drive letter, so a line as Letter=X is a criteria here!

USBDLM checks sections [OnArrival1] to [OnArrival99], and finally [OnArrival] (without a number).

A window style can be suggested using an openstyle= line as shown above.

To prevent the user skips the AutoRun by holding down the shift key you can set Force=1 in a section.

To ensure the integrity of the executable file, an MD5 hash value can be configured:

[OnArrival]

open=calc.exe

md5=DDCD9FCD B7E1956E E69F8E58 B8C8BF0D

Only if the MD5 hash value of the executable is equal to the configured one, it is exected.

The MD5 is case insensitive, spaces doesn't matter.

Sample 1:

- FotoSoftware for drives with a volume label "CANON_DC" or "NIKON_DC"

- nothing for drive X

- otherwise a maximized Explorer window

[OnArrival10]

VolumeLabel1=CANON_DC

VolumeLabel2=NIKON_DC

open=C:\Program Files\PhotoSoftware\PhotoSoftware.exe %root%

[OnArrival20]

Letter=X

open=

;all others

[OnArrival30]

open=explorer.exe %root%

openstyle=max

Sample 2:

- If the file DATA.TXT exist, copy it from the drive to C:\Data

[OnArrival1]

FileExists=%drive%\DATA.TXT

open=cmd /c copy "%drive%\DATA.TXT" "C:\Data"

cmd is the Windows command processor, /c means "execute command and end then", copy is a command which the cmd knows and copies files.

The same hidden:

[OnArrival10]

FileExists=%drive%\DATA.TXT

open=cmd /c copy "%drive%\DATA.TXT" "C:\Data"

openstyle=hidden

Sample 3:

AutoMount a TrueCrypt container file with name secret.tc on T:

[OnArrival10]

FileExists=%drive%\secret.tc

open=C:\Program Files\TrueCrypt\TrueCrypt.exe /v "%drive%\secret.tc" /l T /q

Sample 4:

AutoMount a TrueCrypt volume:

;remove the volume's drive letter, it's useless

[DriveLetters10]

DeviceType=TrueCrypt

Letter=-

[OnArrival10]

DeviceType=TrueCrypt

open=c:\Program Files\TrueCrypt\TrueCrypt.exe /v %PartitionName% /lj /q /a

%PartitionName% is a USBDLM variable and replaced by something like

\Device\Harddisk2\Partition1 as expected by TrueCrypt.

It does not work if a fixed drive is completely used as TrueCrypt container because in this case there is no logical drive on the disk and USBDLM isn't triggered. Create a single partition then and use this a TrueCrypt container.

Sample 5:

- An USB drive on U: and create a share Drive_U for it, on "safe removal" delete the share:

[DriveLetters10]

Letter1=U

[OnArrival10]

Letter=U

open=net share FlashDrive_U=U:\

[OnRemovalRequest10]

Letter=U

open=net share FlashDrive_U /D

Sample 6:

- An USB flash drive at A:, if A: is in use, remout A: to B: and assign A: then:

;mount to A: if available, otherwise unmount

[DriveLetters10]

Letter1=A

Letter2=-

;if unmounted, remount A: to B: and assign A:

[OnArrival10]

Letter=-

open=c:\A_to_B_and_drive_to_A.cmd %VolumeName%

system=1

In the command script c:\A_to_B_and_drive_to_A.cmd:

ReMount A: B:

mountvol A: %1

%VolumeName% is an USBDLM variable and is replaced by something like \\?\Volume{aa6d706a-15da-11dc-a38f-0013d31dd4c5}\, as expected by the Windows commandline tool MountVol.

ReMount is my commandline tool for changing drive letters. Download:

http://www.uwe-sieber.de/files/remount.zip

Assign A: to the previous drive when the USB flash drive has been removed:

[OnRemoval10]

Letter=A

open=ReMount B: A:

system=1

The line system=1 makes USBDLM executing the command line in the context 'local system' where itself is running. This is required for restricted users when tools as MountVol or ReMount, which require admin privileges, are executed .

If you are using external mount tools, then USBDLM loses track of the mountpoints. To keep USBDLM informed, set this:

[Settings]

ExternalMountEvents=1


AutoRun on Removal

AutoRun on and after Removal

In analogy to the OnArrival function USBDLM can execute a commandline when a drive is "prepared for safe removal" and after a drive has been removed.

Reattach of the drive in question or a restart of the USBDLM service required to take effect.

1. On preparation for safe removal

When an USB or Firewire drive becomes "prepared for safe removal" the USBDLM can react while the drive is still available.

This should not take too long, the maximum time is 30 Seconds under XP and 15 Seconds under Vista. But while the notification is processed, no other events can be handled. Therefore USBDLM wait up to 5 Seconds only. If the started process is still running after this time, then USBDLM rejects the removal.

The OnRemovalRequest section for a drive should be created before the drive in question is attached.

As with OnArrival, the paramter Letter is a criterion here.

Sample to copy the file c:\test.txt to the folder \backup on the drive to remove:

[OnRemovalRequest10]

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

Same, but for drive X: only:

[OnRemovalRequest20]

Letter=X:

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

As in the first sample but only if the file \backup\test.txt exists on the drive to remove:

[OnRemovalRequest30]

FileExists=%drive%\backup\test.txt

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

Unmount a TrueCrypt volume T: when the file secret.tc is found on the drive to remove:

[OnRemovalRequest40]

FileExists=%drive%\secret.tc

open=C:\Program Files\TrueCrypt\TrueCrypt.exe /d T

For complex operations it's better to do the job in a batch file and finally prepare the drive for save removal by means of my commandline tool RemoveDrive:

http://www.uwe-sieber.de/files/removedrive.zip

Sample to kill a process running on the drive to remove and wait a bit:

[OnRemovalRequest10]

Letter=X:

open=tskill MyProcess

afterdelay=2000

Killing a process is bad. The more friendly way is to send a WM_CLOSE message to the application window. USBDLM can find the window depending on its window text and (optionally) its class name. In case the application need some addititonal time to completely close after the main windows is gone, an "after delay" of up to 4 Seconds can be specified:

[OnRemovalRequest20]

Letter=X:

CloseWindowText=Calc

CloseWindowClass=SciCalc

afterdelay=2000

Wildcards can be used when the windows text depends on the opened document:

[OnRemovalRequest30]

Letter=X:

CloseWindowText=* - Notepad

CloseWindowClass=Notepad

afterdelay=2000

2. On fail of the safe removal

When the drive to prepare for safe removal is still accessed then the safe removal fails. For instance an just deleted share can be restored then:

[OnRemovalFailed10]

Letter=U

open=net share FlashDrive_U=U:\

3. After removal

Sample: Drive A: has been removed, another drive shall be mounted to A:

[OnRemoval1]

Letter=A:

open=mountvol A: \\?\Volume{433619ea-c6ea-11d9-a3b2-806d6172696f}\

MountVol is a commandline tool which comes with Windows 2000 and higher.


Balloon Tips

USBDLM can show a balloon tip with information about the assigned mountpoints of newly attached drives.

[BalloonTips]

Enabled=1

Timeout=6000

BalloonTipTimeout is the duration the balloon tip is shown in milliseconds.

5 seconds (5000 ms) plus an additional half second per mount point are default.

USBDLM includes text resources for some languages. You can change some or all text snippets in the USBDLM.INI:

Sample for the build in english texts:

[BalloonTips]

Text_drives=drives

Text_partitions=partitions

Text_media=media

Text_mounted_to=mounted to

Text_and=and

Resulting sample texts are

- for attached drives with one volume as flash drives or harddrives with one single partition:

mounted to P:\

- for disks with multiple partitions:

2 partitions mounted to P:\ and O:\

- for devices with multiple drives as multislot cardreaders

3 drives mounted to J:\, P:\ and O:\

- for an inserted media as a flash card

media mounted to P:\

The Windows ANSI charset is supported only, no unicode! The maximum number of chars is 47.

If in your language "mounted to" differs in singular and plural, then you can use the additional item Text_mounted_to_plr.

Charset

If the Windows default charset is not good enough then you can choose another one.

Sample for For Russian:

Text_charset=204

Further values defined in the Mircosoft WinGDI.h:

GREEK_CHARSET           161

TURKISH_CHARSET         162

EASTEUROPE_CHARSET      238

RUSSIAN_CHARSET         204

BALTIC_CHARSET          186

Right to left mode as used for arabic or hebrew isn't supported yet.

Show the drive size

[BalloonTips]

ShowSize=1

This way the drive size is shown behind the device name, like this:

Corsair Flash Voyager USB device - 8GB

Default is off.

Round the drive size

[BalloonTips]

RoundSize=1

Makes USBDLM show fixed sizes as 256MB or 512MB instead of 262MB or 508MB.

Default is on.

Wait for the last volume

When a device with multiple drives is attached as an USB hard drive with multiple partitions or and USB multislot cardreader, USBDLM can either wait until all volumes are processed or update the balloontip for each volume. Default is off.

[BalloonTips]

WaitForLastVolume=1

Suppress Windows Balloons

While an external drive is attached for the first time Windows shows more or less useful balloontips. USBDLM can suppress these balloons if required to show its own. Default is on.

[BalloonTips]

SuppressWindowsBalloons=1

No Balloontips for certain drives

More and more often we come across USB devices as printers, web cams or WLAN sticks which have a 'SelfInstaller'. It's a virtual CD-ROM drives which is used to install their drives by means Window's AutoPlay facility for CD-ROM drives. Very strange solution.

USBDLM shows an BalloonTip for these CD-ROMs. To prevent this, the BalloonTip can be disabled for certain drives by their hardware ID or their "friendly name". Sample:

[BalloonTipsExclude]

DeviceID1=USB\VID_057C&PID_62FF

DeviceID2=selfinstall

The ID has to be eight or more characters. You can use ListUsbDrives to get the string, see [Letters by DeviceID]

Actions on click on the Balloontip

Similar to autorun events you can define actions on left, right and middle click on the balloon.

;on left click open an simple Explorer window with the drive

[OnBalloonClick1]

open=explorer %drive%

;on right click open a foto software

[OnBalloonRClick1]

open=c:\program files\fotosoft\fotosoft.exe %drive%

You can define several events depending on criterions as shown for [AutoRun] .

When more than one drive is shown in the balloon, then the event works for the first one which has a drive letter only.

Do not use explorer /e (which shows an Explorer windows with a drive tree) because Windows needs about 4 seconds to put a new drive into the tree. If you use it before then it may create an empty item in the tree for the new drive...

Under XP with Fast User Switching enabled and under Vista BalloonClick events configured for the first time work after a restart of the USBDLM service only.


Variables

Configuring AutoRun, Explorer Label und mounting into NTFS folders some variables can be used:

Variable           Description         Sample

%Drive%            drive letter        X:

%Root%             drive's root        X:\

%DevName%          device name         Corsair Flash Voyager

%BusType%          connection type     USB

%VolumeLabel%      drive name          My flash drive

%DriveType%        drive type          REMOVABLE

%FsName%           file system         FAT

%Size%             volume size         2 GB

%DiskSize%         disk size           20 GB

%DosDevName%       'DOS device name'   \Device\Harddisk3\DP(1)0-0+d

%PartitionName%    Partition name      \Device\Harddisk2\Partition1

%DeviceNumber%     device number       2

%PartitionNumber%  partition number    1

%VolumeName%       volume name         \\?\{GUID}\

%Date%             Date (yymmdd)       080331


Wildcards

Configuring the criterions DeviceID, VolumeLabel, UsbPortName, UserName und UserGroup wildcards can be used:

The asterisk '*' stands for null to n characters and the question mark '?' for exactly one.

It's all case insensitive.

Sample        | fits for               | does not fit

--------------+------------------------+------------------

Backup?       | Backup1, Backup2,      | Backup, Backup01

              | BackupA, BackupB       |

--------------+------------------------+------------------

Backup*       | Backup, Backup1,       | Back

              | Backup01, Backup001    |

--------------+------------------------+------------------

*Backup       | Backup, MyBackup       | Backup1

--------------+------------------------+------------------

*ck*          | Backup, Block          | Bak

--------------+------------------------+------------------

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

--------------+------------------------+------------------


Explorer Icon and Label

Windows Explorer Icon and Label

USBDLM can put some values into the Windows registry to make the Windows Explorer use a special icon and label for a drive.

But Microsoft seems to have fun in changing the Explorer's behaviour with each Windows version and even each XP service pack. Sometimes it works, sometimes is does not. It's not USBDLM's fault.

The configuration is similar to AutoRun. You can configure criterions, the first section with criterions which fit to the storage volume is used.

The registry settings are made with the flag "volatile", so Windows removes them on restart, USBDLM recreates them if required.

USBDLM deletes them on removal of the drive which they are made for.

Sample to get a camera icon for drives with volume label CANON_DC:

[Explorer1]

VolumeLabel1=CANON_DC

DefaultIcon=shell32.dll,139

The icon is found in the Windows shell.dll at index 139 (counted from 0).

At drive letters A: and B: XP seems to love its floppy icons - here is a high probability that XP ignores the default icon setting.

A default label is usually used only if the drive has no volume label. But sometimes it's used even the drive has a volume label. The Windows behaviour seems to be unpredictable.

Sample to get a label "USB-Drive" for USB drives:

[Explorer2]

BusType=USB

DefaultLabel=USB-Drive

You can use variables here.

Sample for the device name for USB drives which have no volume label:

[Explorer2]

VolumeLabel=-

BusType=USB

DefaultLabel=%DevName%

Under Windows 2000 there is a limit of 31 characters for the default label.


Drives in "Safely Remove Hardware"

Most internal Cardreaders are USB devices and as such they are listed in the "Safely Remove Hardware" facility. USB devices have no chance to say "I'm an internal device and not removable", so Windows cannot distinguish between internal and external USB devices.

USBDLM can remove this removable flag from the registry. This hides a drive from the list.

Whenever the driver of the device starts up the value is written again. Therefore the modification must be done again and again...

The right drives are configured by means of their device ID, see Letters by Device ID how to get it.

Sample for an USB drive:

[HideFromSafelyRemoveHardware]

DeviceID1=USB\VID_058F&PID_6369

Or by its 'Friendly Name':

[HideFromSafelyRemoveHardware]

DeviceID1=Multi Flash Reader

DeviceID1 to DeviceID9 can be configured.

It works for drives only, not for other types of devices.

You can also force a drive beeing shown under "Safely Remove Hardware" - USBDLM then set the removable flag in the registry:

[AddToSafelyRemoveHardware]

DeviceID1=IDE\DISKFUJITSU_MHV2040BH*00000025

But even you can drives listed there, the safe removal facility usually fails to remove IDE drives, while my commandline tool RemoveDrive works.

Devices which are not related to drives can be handled too. But because USBDLM stores no data about non drives, the complete device ID must be configured:

[HideFromSafelyRemoveHardware]

CompleteDeviceID1=USB\VID_1758&PID_2004\050712014270000083

You find the device ID in the Windows Device Manager. Right-click the device -> Properties. Select the "Details" tab. Here the "Device Instance ID" is already selected. Click on the ID and press "Ctrl+C" to copy the ID into the Windows Clipboard.


Ignore a drive

Ignore a drive completely

There are some devices around which behaves strange. USBDLM can ignore such drives.

The right drives are configured by means of their device ID, see Letters by Device ID how to get it.

Sample for the Apple iPod whose iTunes-Software deals with it's drive letter too:

[IgnoreDevices]

DeviceID1=ven_apple&prod_ipod

DeviceID1 to DeviceID9 can be configured.

Ignoring the Apple iPod is already build in. If it shall be handled by USBDLM anyway then force it by using a criterion DeviceID1 in its drive letter section:

[DriveLetters10]

DeviceID1=ven_apple&prod_ipod

Letter=X


Event Logging

USBDLM can write drive arrival and removal events to the Windows application log.

[Settings]

EventLog=1

It writes then items like these:

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

Hint: While the Windows Event Viewer is open, the USBDLM.EXE cannot be deleted or replaced.


System Restore

XP System Restore

The XP System Restore wants to watch external harddrives too event this is completely useless and only great for screwing up system restore points by not having the same disks attached when required.

Vista only watches the system drive.

USBDLM can try to disable the system restore for USB and Firewire drives but this is experimental. In most cases it works but sometimes it does not.

[Settings]

DisableSystemRestoreForNewDrives=1

The folder 'System Volume Information' will be created anyway because it's used for other Windows background stuff.

To prevent at least the system restore scans around the disk and fills the System Volume Information folder, USBDLM can add a value to the registry which prevents files and folders being backed up by NT-Backup and the system restore.

http://www.tweakxp.com/article37472.aspx

[Settings]

AddNewDrivesToFilesNotToBackup=1


Problems

Windows 2000

Under Windows 2000 USBDLM sometimes cannot determine the names of the USB ports, so the 'drive letters by USB port' doesn't work here.

When a drive is attached for the first time, then it appears in the system, then it disappears and appears again. Under XP USBDLM can deal with it, under Windows 2000 the ballontip might be shown twice and AutoRun might cause problems. Just reattach the drive then.

Windows Explorer fails when deleting a folder

This is one of many issues when a drive is mounted into an NTFS folder, it's not an USBDLM issue. Please read section "Mounting to NTFS folders" under configuration .

Drive letters accidental reassigned

Drive letters removed by NoMediaNoLetter or when drives are mounted into NTFS folders are reassigned when the "U3 launchpad" (the U3launch.exe on the fake CDROM drive) is started. It's a bug in the U3 software.

Cannot delete or replace the USBDLM.EXE

While the Windows Event Viewer is open, the USBDLM.EXE cannot be deleted or replaced.

Devices which fail to start under Vista

For removable USB drives Vista installs a WPD file system driver too. WPD is "Windows Portable Device", a programming interface for devices as MP3 players, mobile phones and others. If an USB mass storage device has no drive letter, then the WPD file system driver for this drive fails to start. It's not USBDLM's fault, it's just the missing drive letter.

The device is still working as mass storage device, only WPD is not available which doesn't hurt.

If you don't want this WPD stuff at all then you can deactivate the service "Portable Device Enumerator Service". The Windows Media Player stop then synchronizing with USB mass storage devices.

TrueCrypt drives

Drives uses as TrueCrypt containers can be detected as such only as long as they are not mounted by TrueCrypt. This is because TrueCrypt takes exclusive access to the drive so USBDLM cannot read test data.