New in this version
Fixed tooltip bug that slipped through testing - if you hovered the mouse over the program when there was no drives inserted it would create an error. Many thanks to Bruce Lightfoot for spotting this.
New in version 1.3
There's been a huge number of changes since the last stable version. Most elements of the program have been rewritten. Many bugs have been fixed and there are some significant new features. You can see the full list of changes at the end. The most important ones are listed below:
- Full card reader and memory card support. You can now eject media, show/hide card readers, hide empty card readers and even define drives as card readers.
- Mountpoint support. All detection and ejecting is done using mountpoints rather than drive letters, this means that drives mounted in a folder like this are supported.
- Options window added - options can now be easily set and saved. There are now many settings that can be configured and customised.
- Much better notifications:
- Uses balloon hints in the taskbar for notifications instead of a messagebox
- Much better detection and explanation of the reasons for a failed eject
- Now notifies (via a balloon hint) when an eject is successful
- Support for Firewire disks.
- Big changes to drive detection and ejection code - stops the freezing that could sometimes happen with the old version when trying to eject some types of drive.
What is USB Disk Ejector?
A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It is a quick, flexible, portable alternative to using Windows' "Safely Remove Hardware" dialog.
It will work on any version of Windows from XP onwards, that includes:
- Windows XP (32 and 64 bit)
- Windows Vista (32 and 64 bit)
- Windows 7 (32 and 64 bit)
- Windows Server 2003 and 2008 are untested but should work.
What makes this so useful?
It is quick. Rather than clicking through the "Safely Remove Hardware" dialog you can very quickly remove drives or card media. You can even create shortcuts or hotkeys to eject a drive.
It is simple. The program is designed to be easy to use and its advanced options are hidden so that they dont get in the way.
It is portable. It can be stored and used on a removable device like a pen drive. It can even eject the disk that it is running from. It doesnt require administrator rights and doesnt need installing.
It is flexible. There are many features that can be customised such as hotkeys, positioning, notifications and post-eject actions.
It can be run as a command line program. The command line options are very flexible, they can be used to:
- Eject the drive that the program is running from.
- Eject a drive by specifying a drive letter.
- Eject a drive by specifying a drive name.
- Eject a drive by specifying a mountpoint
- Eject a drive by specifying a partial drive name.
So you could setup a desktop shortcut or bat file to eject a drive. Or if you use a menu such as PStart or the Portable Apps launcher you could use the command line switches so that with one click the menu will exit, the program will run and the drive will be ejected. See the 'Command Line' section below for more information.
It can eject disks when Vista cant. In Vista, disks often cant be ejected because they have an open explorer window. Other versions of Windows will close any explorer windows belonging to a disk but Vista often doesnt - so USB Disk Ejector closes does it before ejecting.
It can eject disks when Windows sometimes cant. If any applications are running from a disk then Windows wont be able to eject it. USB Disk Ejector can detect and auto-close any applications running from the disk before ejecting. Please note this closes applications that were launched from the disk not applications that have opened a file on the disk. See the limitations section further down for more information.
It is small. Less than 1MB.
It is open source. All source code can be found on my website.
What do I need to use this?
A removable USB or Firewire device such as a flash drive, digital camera or external hard drive. Any USB or Firewire device that shows as a disk should be removable by this.
For ejecting card media - such as flash memory cards any internal or external card reader should work.
Using the program
- Load the program, if you have any removable USB/Firewire drives or memory cards they will be shown in the list.
- If you plug in any additional devices while the program is running then the list will automatically update to show them.
- Double click on a device to remove it.
- Unplug the device from your computer.
More features:
- Double right clicking on a drive opens an explorer window for that disk
- Drives mounted in a folder like this are also supported.
- If your card reader is shown as a drive not a card reader then you can change this. In options go to the Card Readers tab. There you can define a particular drive as a card reader, it will then be treated and shown as a card reader.
- The program has a system tray icon - you can right click this to eject disks. This is similar to the behaviour of the Windows "Safely Remove Hardware" tray icon.
- Settings are saved in a file called USB_Disk_Eject.cfg - but this wont be created unless you change a setting in the options. It will always be saved into the same place as the program itself.
- If you have a disk that has multiple drives (eg a hard drive with multiple partitions) then this can be set to only show one entry in the program. To enable this tick "show drives with partitions as one entry" in the options. If you enable this option then hovering your mouse over the disk will being up a tooltip showing what disks 'belong' to that entry.
- There are many more features - click on "More" and go to "Options" to see the full list.
Command Line
When using the program on the command line, settings that have been created when using the program normally may still be used. If USB_Disk_Eject.cfg is found in the same folder as the program then it will read and use settings from it. Settings such as removal notifications will be dictated by what has been set in options if this file is present.
This is particularly important when dealing with memory cards and card readers. For example if a device has been defined as a card reader in options then when ejecting the program will honor this and eject the card media not the card reader device.
If you dont want the program to inherit options then make sure that USB_Disk_Eject.cfg is not present in the same folder.
The following command line options are available:
- /?
Displays a dialog that shows all command line options. - /NOSAVE
Settings are not saved, no cfg file will be created. But if theres USB_Disk_Eject.cfg in the same place as the program, options will be read from it. Use this if you want to launch the program but stop it saving settings or overwriting existing settings. - /REMOVETHIS
Ejects the drive that the program is running from. Eg if the program is run from a usb stick on drive G then drive G would be ejected. - /REMOVELETTER
Ejects the specified drive letter. Eg /REMOVELETTER G - /REMOVEMOUNTPOINT
Ejects the specified mountpoint. Eg /REMOVEMOUNTPOINT "C:\Test USB Disk Mount" - /REMOVENAME
Ejects the drive with the specified name. Eg /REMOVEDRIVE "Sandisk U3 Titanium"
Partial name matching is possible if a wildcard (*) is used. Eg /REMOVENAME "*SANDISK" would eject a drive that had Sandisk in its name. - /REMOVELABEL
Ejects the drive with the specified label. Eg /REMOVLABEL "Work Drive"
Partial name matching is possible if a wildcard (*) is used. Eg /REMOVELABEL "*BEN" would eject a drive that had Ben in its label (eg Ben's Pen Drive).
The command line switches could be used to eject a drive from the command prompt, a bat file, a desktop shortcut or as part of a script or menu.
Upgrading From Previous Versions
If you are upgrading from a previous version of USB Disk Eject be aware that some command line switches have been removed:
- /SILENT
- /SHOWEJECT
- /CLOSEAPPS
- /CLOSEAPPSFORCE
These settings are now set in the options menu. If you are using the program from the command line and USB_Disk_Eject.cfg is found in the same folder as the program then it will read and use settings from it. If its not found then the default settings will be used.
Using these switches with this new version of the program wont cause any problems - they will just be ignored.
Limitations/Bugs
Please contact me if you spot any bugs or problems that arent listed below.
- If you have balloon tips turned on in Windows XP then Windows shows a balloon tip when a device is removed ("device x can now be safely removed from the system"). If you remove one device and then try to remove another, the second device will not be removed until you close the balloon tip. If this irritates you, then you can try disabling balloon tips altogether. See this link for information on how to do this.
- A disk eject can fail when there is still an application or process accessing the drive.
If the application that is accessing the drive is stored on and has been launched from the drive that you're trying to eject then USB Disk Ejector can detect this and close it (see the options menu to enable this). Eg if you launch Portable Firefox from a USB flash drive and then try and eject that flash drive then USB Disk Ejector will close Portable Firefox and then successfully eject the drive.
If the program accessing the disk is one installed on your computer (eg if Microsoft Word has opened a document on a flash drive that you are trying to eject) - then USB Disk Ejector wont be able to detect this and wont be able to close it. Doing this reliably requires administrator rights and a kernel driver - something beyond the scope of this program.
You may be able to use Process Explorer or Unlocker to find and stop whatever program or process is accessing a drive.
Acknowledgements And Thanks
- Ejection code is based upon C code by Uwe_Sieber.
- Ipod icon unknown - please contact me if you are/know the author.
- Options unit based on code by Sebastián Mayorá
- Program and drive icon is from the Snow.E2 set by Sascha Höhne.
- Uses the Jedi Code Library and the JEDI Setup and Config Manager API
Uses PNG ImageList by Martijn Saly
- Uses Virtual Treeview by Mike Lischke (and others)
Disclaimer
The software is provided "as-is" and without warranty of any kind, express, implied or otherwise, including without limitation, any warranty of merchantability or fitness for a particular purpose. In no event shall the initial developer or any other contributor be liable for any special, incidental, indirect or consequential damages of any kind, or any damages whatsoever resulting from loss of use, data or profits, whether or not advised of the possibility of damage, and on any theory of liability, arising out of or in connection with the use or performance of this software.
Support
Contact me.
All my software is completely free. If you find this program useful please consider making a donation. This can be done on my website.
New In This Version (The Full List of Changes)
- Support for Firewire drives/disks
- Support for card readers/flash memory cards (Cards are now ejected not the card reader as happened in previous versions)
- Auto-polling to detect when a new flash card is inserted (windows doesn't do this)
- Double right clicking on a drive opens an explorer window for the disk
- Much better notifications:
- Uses balloon hints in the taskbar for notifications instead of a messagebox
- Much better detection and explanation of the reasons for a failed eject
- Now notifies (via a balloon hint) when an eject is successful
- Automatically closes explorer windows related to the disk before ejecting (this stops a lot of the failed ejects in Vista)
- Can auto-close any applications running from the disk before ejection:
- Can do this using a safe 'ask' method or a brute force unsafe method
- Please note this closes applications that were launched from the ejecting disk. It currently does not close applications launched from elsewhere that have a file from the ejecting drive open.
- Eg - if you launch portable firefox from a usb stick and then eject the stick it should close portable firefox and eject successfully, but if you open a document on the pen drive in Word then it wouldnt be able to detect and close this.
- Hotkey support (can assign a hotkey to eject a drive based on its name or drive letter)
- New 'no disks' found icon - the old face icon apparently scared some people
- Added tray icon:
- Added popup menu to tray icon so you can right click and eject disks, similar to the behaviour of Windows' 'Safely remove hardware' tray icon
- Smart auto-resizing of the program window to accommodate new disks/devices
- Better docking behaviour when the program window is in a corner of the screen
- Added '/NOSAVE', '/CLOSEAPPS' and '/CLOSEAPPSFORCE' command line switches
- Fixed - font size in the options dialog on Windows XP
- Fixed - very rarely a device with many disks/partitions might not have all its disks detected correctly. The detection procedure is now threaded to stop this rare occurance
- Fixed - if the program was set to read only - when it restarted in mobile mode and copied to the temp folder it couldnt delete itself
- Options dialog added - options can now be set and saved. Click on 'more' then 'options' to show it.
- Added options to:
- Start the program minimized
- Remember the last size of the program window
- Remember the last position of the program window
- Autosize the program window
- Enable/disable balloon notifications
- Close to the system tray
- Minimize to the system tray
- Enable/disable eject notifications
- Use the standard windows eject notifications
- Close the program after a successful ejection
- Minimize the program after a successful ejection
- Control the adding and management of hotkeys
- Control the closure of any programs running from a drive before ejection
- Search for media cards (in card readers)
- And much more...
- Threads - stop very rare issue where device with many partitions or card reader device supporting multiple devices - not all drives were detected
- Card readers - specify which ones are readers in options - match by various fields
- Option to hide card readers with no media in
- Option to set card polling time - default is 5 seconds
- Option to hide all card readers
- Option to show drives with multiple partitions as one entry - with different icon to indicate this
- Option to set max width of form - useful eg if mountpoint in a deeply nested folder
- Fixed - problem with commandline - if drive letter called as lower case ExtractFilePath - would pass the letter as lower case
- Fixed - EmumWindows - problem - explorer windows are now closed successfully again
- Fixed - Ejecting mountpoint from command line - case mattered - even when doing /REMOVETHIS - now looks up the correctly cased mountpoint name
- Fixed - quotes around params when restarting in mobile mode
- Fixed - /REMOVELETTER not restarting in mobile mode when attempting to eject self
- Fixed - EnumWindowAndClose and CloseAppsRunningFrom - now take into account partitions on same drive
- Fixed - Clearer error codes - shows the code if reason for a failed eject is unknown (and not 0)
- Threads - stop very rare issue where device with many partitions or card reader device supporting multiple devices - not all drives were detected
- Card readers - specify which ones are readers in options - match by various fields
- Option to hide card readers with no media in
- Option to set card polling time - default is 5 seconds
- Option to hide all card readers
- Option to show drives with multiple partitions as one entry - with different icon to indicate this
- Option to set max width of form - useful eg if mountpoint in a deeply nested folder
- Fixed - problem with commandline - if drive letter called as lower case ExtractFilePath - would pass the letter as lower case
- Fixed - EmumWindows - problem - explorer windows are now closed successfully again
- Fixed - Ejecting mountpoint from command line - case mattered - even when doing /REMOVETHIS - now looks up the correctly cased mountpoint name
- Fixed - quotes around params when restarting in mobile mode
- Fixed - /REMOVELETTER not restarting in mobile mode when attempting to eject self
- Fixed - EnumWindowAndClose and CloseAppsRunningFrom - now take into account partitions on same drive
- Fixed - Clearer error codes - shows a code if reason for a failed eject is unknown (and not 0)