Cause 1: The drive letter is already mounted as a volume
What's actually happening here is that Windows treats mounted volumes differently from regular drive letters. If you've ever plugged in an external drive, a USB stick, or mounted an ISO as a folder, the system remembers that volume-to-drive-letter mapping even after you remove the device. When you try to SUBST or JOIN that letter, the kernel sees a persistent flag on it and spits out ERROR_BUSY_DRIVE (0x0000008E). The drive isn't actively running — it's just marked as occupied in the mount manager database.
This is most common on Windows 10 22H2 and Windows 11 23H2 after using an external SSD that got assigned, say, E:, then you yanked it without safely ejecting. Next time you run subst E: C:\MyFolder, boom — error.
Fix: Unmount the orphaned volume with diskpart
- Open Command Prompt as Administrator. (Win+R, type
cmd, Ctrl+Shift+Enter.) - Run
diskpart. - Type
list volumeand look for the drive letter you want to free. It might show E: with no file system or size — that's the ghost. - Select it:
select volume X(replace X with the number). - Remove the mount point:
remove letter=E(use your letter). - Type
exitto quit diskpart.
The reason step 5 works is that remove letter doesn't delete the volume — it only clears the assignment in the mount manager. After that, subst or join should work immediately. No reboot needed.
Cause 2: An active process holds an open handle on the target drive
This is sneakier. Some background service, Windows Explorer window, or even a cmd session that has a directory on that drive as its current working directory will keep a lock on the volume. The NTFS file system won't allow reassigning the drive letter while a handle is open. You'll see the same 0x0000008E even though the drive looks idle.
Real-world trigger: You have a File Explorer window open showing D:\, or a terminal sitting at D:\some\folder. Running subst D: C:\Temp fails with this error. Or a Windows backup service (like File History) is indexing F: and won't release it.
Fix: Use Handle or Process Explorer to find and close the lock
- Download Process Explorer from Microsoft Sysinternals (or use
handle.exefrom the same suite). - Open Process Explorer as Administrator. Press Ctrl+F and type the drive letter (e.g.,
D:). It'll list every process with an open handle on that volume. - Look for
explorer.exe,cmd.exe,powershell.exe, or any backup app. Close the matching window or kill the process (right-click → Kill Process). - Alternatively, use the command line:
handle64.exe -a -p explorer.exeto see handles, then close Explorer windows manually.
Skip the old net use tricks — they only work for network drives, not local volumes. The real fix is to close the handle. Once it's gone, run subst or join again and it'll succeed.
Cause 3: The drive letter is reserved by a registry artifact
Less common, but I've seen it on systems that previously used JOIN to merge a folder into a drive, then rebooted. The registry key HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices keeps a stale entry for that drive letter. When subst tries to claim it, the mount manager sees the old record and refuses.
Fix: Clean the MountedDevices registry key
- Open Regedit as Administrator.
- Navigate to
HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices. - Look for entries named
\DosDevices\E:(or your letter). They'll look like\??\Volume{GUID}. - Right-click and delete the one for the problematic drive letter.
- Close Regedit and reboot. Yes, you have to reboot — the mount manager caches this info in memory.
Warning: Don't delete all entries. Only remove the specific drive letter. If you wipe too many, Windows might re-assign letters on next boot.
Quick-reference summary table
| Cause | Diagnosis | Fix |
|---|---|---|
| Mounted volume occupies the letter | Run mountvol or diskpart list volume — letter shows without a real drive | diskpart remove letter |
| Open handle from a process | Run handle.exe or Process Explorer — shows locking PID | Close window or kill process |
| Stale registry entry | Check HKLM\SYSTEM\MountedDevices — old \DosDevices\X: exists | Delete the entry, reboot |