| |
Lizenz |
Alle Programme auf dieser Seite funktionieren unter Windows 2000 und höher. Sie sind Freeware.
Erlaubt:
- Nutzung in jeder Umgebung, auch kommerziell
- Ausliefern zusammen mit anderen Software-Produkten, auch kommerziellen
- Veröffentlichen auf CD/DVD von Computer-Zeitschriften
Nicht erlaubt:
- Verändern von Dateien
|
|
| |
|
| |
RemoveDrive V1.9.4 - Laufwerke sicher entfernen |
RemoveDrive dient zum 'Hardware sicher entfernen' per Kommadozeile. Es funktioniert aber nur für Laufwerke und nicht für sonstige Geräte.
RemoveDrive Laufwerk: [-L][-h][-b][-i][-s][-w:nnnn]
Laufwerk: ist das zu entfernende Laufwerk, z.B. U: oder ein NTFS-Mountpunkt wie "E:\_CardReader\USB20 CF"
oder . für das aktuelle Laufwerk
oder \ für das Laufwerk der RemoveDrive.exe
oder ein Volume-Name wie \\?\Volume{433619ed-c6ea-11d9-a3b2-806d6172696f}\
[-L] 'loop', Endlosschleife bis Erfolg oder Abbruch
[-h] 'handles', zeigt offene Handles auf dem Laufwerk (exprimentell)
[-w:nnnn] 'wait', wartet nnnn Millisekunden vor dem Schließen
[-s] 'self delete', removedrive.exe löscht sich nach dem Beenden selbst
[-b] 'balloon', Windows XP zeigt bei Erfolg den Balloontip "Hardware kann jetzt..."
[-i] 'indexing', stoppt den Windows Index-Dienst für einen Moment
[-d] 'debug', zeigt Debug-Infos
oder
RemoveDrive "GeräteName"
RemoveDrive kann jede Art von USB-Laufwerk abmelden, mit Firewire-Platten funktioniert es auch problemlos. Bei SATA hängt das Vorgehen vom Treiber ab - wenn der die Platte nicht als entfernbar kennzeichnet, wird nur das Laufwerk abgemeldet, sonst so wie bei USB der Anschluß.
Mit Parameter -L gestartet wartet es in einer Endlosschleife bis Windows keinen Einspruch mehr erhebt, also z.B. auf einem Laufwerk keine offenen Dateien mehr vorhanden sind. Als Ergebnis wird dann grün 'success' oder rot 'failed' ausgegeben.
removedrive u: -L
würde z.B. versuchen Laufwerk U: abzumelden und es endlos weiter versuchen bis es klappt.
Statt des LW-Buchstabens kann auch ein Mount-Point angegeben werden - wenn er Leerzeichen enthält natürlich in Anführungszeichen, z.B.
removedrive "E:\_CardReader\USB20 CF" -L
Bei einem Multi-CardReader würde es hier den ganzen Reader abmelden - egal welchen Slot man
angibt. Will man nur ein Medium 'auswerfen', nehme man mein EjectMedia, s. unten.
GeräteName ist einer der ID-Strings des Laufwerks, z.B. der 'Friendly Name' wie "Corsair Flash Voyager" oder die Hardware-ID des Laufwerks wie USB\VID_1234&PID_5678...
Hier können auch Wildcards eingesetzt werden, z.B. RemoveDrive *Flash* würde das erste Laufwerk mit Flash im Namen auswerfen.
Wenn das Entfernen fehlschlägt, greift noch ein Programm auf das Laufwerk zu. Das kann etwas banales, wie ein
geöffneter Ordner im Windows-Explorer (nur 2000 und Vista, XP schließt das Explorer-Fenster automatisch) oder ein offenes Word-Dokument sein, ein gemounteter TrueCrypt-Container, aber auch die Überwachung eines Viren-Scanners. Auch eine Netzwerk-Freigabe auf das Laufwerk reicht, wenn diese bereits benutzt wurde.
Mit dem
ProcessExplorer von SysInternals kann man oft herausfinden, wer noch auf ein Laufwerk zugreift: Nach dem Start 'Find' -> 'Find Handle or DLL', hier den Laufwerksbuchtaben eingeben, z.B. X:\ und suchen.
Manchmal ist es auch ein Handle auf den 'DOS device name', sowas wie '\Device\Harddisk3\DP(1)0-0+b' - auch danach kann man im ProcessExplorer suchen - z.B. 'disk3' reicht. Den 'DOS device name' zeigt mein ListUsbDrives oder auch ListDosDevices.
RemoveDrive kann auch vom abzumeldenden Laufwerk aus gestartet werden. Es macht dann eine temporäre Kopie von sich und führt diese mit den selben Parametern aus. Eine aussagekräftigen Errorlevel gibts dann naturgemäß nicht. Die temporäre Kopie löscht sich dann anschließend selbst.
Download: removedrive.zip
Letzes Update: 16. Mai 2010
Für Entwickler habe ich bei codeproject.com ein Demo-Projekt zusammengestellt, das die grundlegenden Funktionen demonstriert:
How to prepare a USB drive for safe removal
Eine mit dem Windows-Trayicon vergleichbare Alternative ist übrigens "HotSwap":
http://mysite.verizon.net/kaakoon/hotswap/index_enu.htm
|
|
| |
|
| |
RestartSrDev - reaktiviert "Sicher entfernte" Geräte die Problem-Code 21 haben |
RestartSrDev DeviceId [-t][-w:nnnn]
DeviceId: is the devices device instance ID, it can include wildcards
[-t] test only
[-w:nnnn] wait nnnn milliseconds before close
[-d] debug info (show all devices)
Beispiele:
RestartSrDev *
RestartSrDev USB\VID_0781*PID_5406*
RestartSrDev USB\VID_0781&PID_5406\0000051017037750
Admin-Rechte werden benötigt.
Errorlevel:
0 - mindestens ein Gerät neu gestartet
1 - kein Gerät neu gestartet
2 - anderes Problem
Hintergrund-Infos
Nachdem ein Gerät "sicher entfernt" wurde, hat es den
Problem-Code 47. Das ist
eine Konstante aus der cfg.h:
CM_PROB_HELD_FOR_EJECT.
Soweit bekannt, kann so ein Gerät nicht reaktiviert werden. Bei einem
USB-Gerät gibt es die Möglichkeit, den Hub an den das Gerät angeschlossen ist
neu zu starten. Das reaktiviert alle an diesem Hub angeschlossenen Geräte.
Manchmal haben Geräte nach dem sicheren Entfernen aber den Code 21 (
CM_PROB_WILL_BE_REMOVED).
Solche Geräte können reaktiviert werden und genau das macht RestartSrDev.
Welchen Problem-Code ein Gerät nach dem sicheren Entfernen hat, hängt offenbar
von der verwendeten API-Funktion ab. Zum sicheren Entfernen gibt es zwei:
CM_Query_And_Remove_SubTree und CM_Request_Device_Eject.
CM_Query_And_Remove_SubTree führt zu "Code 21", CM_Request_Device_Eject dagegen zu "Code 47".
CM_Query_And_Remove_SubTree soll nicht für Geräte genutzt werden, die das "SurpriseRemovalOk" Flag haben. USB-Geräte haben diese Flag, somit ist die Nutzung dieser Funktion für USB-Geräte eigenlich falsch, warscheinlich ist das auch der Grund für den anderen Problem-Code. Vermutlich ist bei Code 21 das sichere Entfernen nicht wirklich komplett aber Probleme scheinen sich daraus aber nicht zu ergeben und da Laufwerk und Volume dann bereits weg sind, ist das wohl "sicher" genug.
CM_Query_And_Remove_SubTree benötigt Admin-Rechte, während CM_Request_Device_Eject auf für eingeschränkte Nutzer funktioniert aber wiederum nicht in einem Dienst, dort geht nur CM_Query_And_Remove_SubTree...
Mein Tool RemoveDrive versucht zuerst CM_Query_And_Remove_SubTree und falls das fehlschlägt CM_Request_Device_Eject.
Wenn man also mit Admin-Rechten mit RemoveDrive ein USB-Laufwerk abmeldet, kann man es mit RestartSrDev reaktivieren.
Download: restartsrdev.zip
Letztes Update 16. Mai 2010
|
|
| |
|
| |
EjectMedia - Medium auswerfen |
EjectMedia dient zum Auswerfen von Speicher-Medien per Kommandozeile, genau das was der Windows-Explorer bei Laufwerks-Rechtklick -> 'Auswerfen' macht. Bei Laufwerken die es unterstützen wird das Medium physisch ausgeworfen, z.B. bei CD/DVD- und ZIP-Laufwerken. Bei Flash-Kartenlesern wird das Medium nur logisch ausgeworfen - ist also nicht mehr ansprechbar bis es entnommen und erneut eingelegt wird.
Das Auswerfen des Mediums ist die geeignete Methode, um eine Flashkarte in einem Multislot-Kartenleser abzumelden. "Hardware sicher entfernen" oder mein RemoveDrive würden den ganzen Kartenleser abmelden.
Unter XP dürfen eingeschränkte Nutzer keine 'Wechseldatenträger' auswerfen -
das läßt sich aber ändern.
EjectMedia Laufwerk [-L][-d][-f][-h][-w:nnnn]
Laufwerk: ist das Laufwerk dessen Datenträger ausgeworfen werden soll, z.B.
U: oder ein NTFS-Mountpunkt wie "E:\_CardReader\USB20 CF"
oder . für das aktuelle Laufwerk
oder \ für das Laufwerk der EjectMedia.exe
oder ein Volume-Name wie \\?\Volume{433619ed-c6ea-11d9-a3b2-806d6172696f}\
[-L] 'loop', Endlosschleife bis Erfolg oder Abbruch
[-d] 'dismount', nur dismounten aber nicht auswerfen
[-f] 'force', Dismounten oder Auswerfen erzwingen
[-h] 'handles', zeigt offen Handles auf dem Laufwerk (exprimentell)
[-w:nnnn] 'wait', wartet nnnn Millisekunden vor dem Schließen
Wie oben beschriebenes RemoveDrive kann EjectMedia vom abzumeldenden Laufwerk aus gestartet werden.
Download: ejectmedia.zip
Letzes Update: 2. August 2009
|
|
| |
|
| |
LoadMedia - Medium laden |
LoadMedia macht das Gegenteil von EjectMedia. Eine Wirkung erzielt es aber nur bei CD/DVD-Laufwerken - nur die haben eine Mechanik zum Laden. ZIP-Drives können dagegen nur auswerfen, bei Kartenlesern wird ein ausgeworfener Datenträger nicht reaktiviert.
LoadMedia Laufwerk [-d][-f][-w:nnnn]
Laufwerk: ist das Laufwerk dessen Datenträger geladen werden soll, z.B.
U: oder ein NTFS-Mountpunkt wie "E:\CD-Laufwerke\Brenner1"
oder . für das aktuelle Laufwerk
oder ein Volume-Name wie \\?\Volume{433619ed-c6ea-11d9-a3b2-806d6172696f}\
[-f] 'force', Laden erzwingen
[-w:nnnn] 'wait', wartet nnnn Millisekunden vor dem Schließen
Download: loadmedia.zip
Letzes Update: 16. Mai 2010
|
|
| |
|
| |
ReMount - Laufwerksbuchstaben ändern |
ReMount dient zum schnellen Ändern von Laufwerksbuchstaben und Mountpunkten per Kommandozeile.
Admin-Rechte werden benötigt.
ReMount X: Y:
X: der aktuelle Laufwerksbuchstabe
Y: der neue Laufwerksbuchstabe
Wenn beide Buchstaben belegt sind und getauscht werden sollen, gibt man Parameter -s wie 'swap' an:
remount f: u: -s
Für unsinnige Aktionen, wie das Remounten des Windows-Laufwerks oder das Mounten eines lokalen Laufwerks auf den Buchstaben eines Netz-Laufwerks, gibt es den Parameter -f (wie 'force'):
remount c: x: -f
Auch NTFS-Mountpunkte sind möglich:
ReMount X: "E:\MyCardReader\Slot 1"
"E:\MyCardReader\Slot 1" ist der neue Mountpunkt und muß ein vorhandener, leerer
Ordner auf einem NTFS-Laufwerk sein.
Download: remount.zip
Letzes Update: 1.8.2009
|
|
| |
|
| |
DriveCleanup |
DriveCleanup macht genau das was man von Hand im Geräte-Manager tun könnte, nämlich alle derzeit nicht angeschlossene USB-Massenspeicher, 'Disks', 'CDROMs', 'Floppys' und 'Speicher-Volumen' aus dem Gerätebaum zu löschen.
Jedes einmal angeschlossene Laufwerk hinterläßt in der Geräteverwaltung eine Reihe von Einträgen, damit es beim nächsten Anschließen nicht als neues sondern als bekanntes Laufwerk eingebunden wird. Allerdings soll es Probleme geben, wenn die Anzahl gegen 1000 geht.
Ab v0.6 begibt sich DriveCleanup auf das rutschige Parkett eines Registry-Cleaners: Es entfernt auch verwaiste Einträge unter
- HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\CPC\Volume
Um zu testen, was das Tool entfernen würde, kann es mit Parameter -T wie 'test' gestartet werden:
DriveCleanup -t
Ohne Parameter gestartet legt es gleich los.
Um gezielt nur bestimmte Typen zu bereinigen gibts noch die Parameter -u -d -c -f -v -r.
Im Test-Modus werden typischerweise weniger Einträge im Bereich Regsitry angezeigt, da DriveCleanup hier nur verwaiste Einträge entfernt, und durch das Aufräumen im Geräte-Baum verwaisen dann weitere...
Ab V0.6 ist eine x64-Version enthalten und unter x64-Windows funktioniert auch nur diese.
Admin-Rechte werden benötigt.
Download V0.7:
drivecleanup.zip
Download V0.4 (ohne Registry Bereinigung):
drivecleanup04.zip
|
|
| |
|
| |
ListDosDevices |
Laufwerksbuchstaben verweisen über 'symbolic links' auf Kernel-Objekte. Diese 'symbolic links' werden aus historischen Gründen auch 'DOS device names' genannt.
Mit ListDosDevices kann man sich anzeigen lassen, welche 'symbolic links' sich hinter den Laufwerksbuchstaben verbergen.
Beispiel:
A: REMOVABLE \Device\Floppy0
B: ----
C: FIXED \Device\HarddiskVolume1
D: FIXED \Device\HarddiskVolume2
E: CDROM \Device\CdRom0
F: CDROM \Device\CdRom1
G: ----
H: ----
I: ----
J: ----
K: ----
L: ----
M: ----
N: ----
O: ----
P: REMOTE \Device\LanmanRedirector\;P:0000000000013548\server01\public
Q: ----
R: ----
S: FIXED \??\C:\Dokumente und Einstellungen\User\Anwendungsdaten
T: ----
U: REMOVABLE \Device\Harddisk5\DP(1)0-0+19
V: ----
W: ----
X: ----
Y: FIXED \Device\TrueCryptVolumeY
Z: ----
Hier sind
A: Floppy
C: + D: Festplattenpartitionen
E: + F: CD oder DVD-Laufwerke
P: Netz-Laufwerk
S: Subst-Laufwerk
U: USB-Stick (Win2000, XP, 2003; ab Vista mit 'DOS device name' wie eine Partition)
Y: TrueCrypt-Laufwerk
Download: listdosdevices.zip
|
|
| |
|
| |
DeleteDosDevice |
Wenn eine Software abstürzt, die virtuelle Laufwerke unter einem Laufwerksbuchstaben
bereitstellt, wird ein 'symbolic link', ein 'DOS device name' hinterlassen. Dieser Laufwerksbuchstabe bleibt dann u.U. für alle Zeit belegt - dann hilft DeleteDosDevice.
Wenn man sicher ist, es mit so einer Buchstaben-Leiche zu tun zu haben:
deletedosdevice x:
Download: deletedosdevice.zip
Letztes Update: 25.7.2010
|
|
| |
|
| |
RescanDevices |
Nachdem eine IDE- oder SATA-Platte zu sicheren Entfernen vorbereitet wurde, kann man sie durch ein "Suchen nach neuer Hardware" reaktivieren (mit USB-Geräten funktioniert das nicht!).
Genau das macht dieses Tool.
Es ist ein unsichtbares Windows-Programm. Es macht das gleiche wie Microsofts Tool DEVCON wenn es mit dem Parameter 'rescan' gestartet wird. Da RescanDevices kein Konsolen-Programm ist, popt auch keine Konsole auf.
Download: rescandevices.zip
|
|
| |
|
| |
Sonstiges |
Um auf der Windows-Konsole effektiv zu arbeiten, empfehle ich FAR -
den File and Archive Manager von RARSoft. Das ist ein
Norton-Commander-Clone für die Win32-Konsole.
Dazu noch meine Konsolen-Fonts, damit das
Ganze schön DOS-mäßig aussieht :-)
|
|
| |
|
| |
AutoRun Settings V1.3 |
AutoRunSettings verschafft komfortablen Zugriff auf die grundlegenden Einstellungen für das Windows AutoRun.
AutoRun kann abhängig vom Laufwerks-Typ und vom Laufwerksbuchstaben deaktiviert werden.
Die Einstellungen existieren system-global ("all users") und für den aktuellen Nutzer. Wenn eine Einstellung system-global vorhanden ist, ist die nutzerabhängige Einstellung "überstimmt", sprich wirkungslos.
Wenn die jeweilige Schaltfläche "delete setting" deaktiviert ist, befindet sich in der Registry kein entsprechender Wert - die angezeigten Laufwerkstypen sind dann Standard für das jeweilige Betriebssystem, so wie von Microsoft dokumentiert.
Bei Laufwerks-Typen und Laufwerks-Buchstaben heißt ein gesetzter Haken "AutoRun EIN", zum Deaktivieren also den Haken wegnehmen. AutoRun kommt für ein Laufwerk zum Zuge, wenn es für dessen Laufwerkstyp und dessen Laufwerks-Buchstaben aktiv ist.
Verantwortlich für AutoRun und AutoPlay ist der Dienst "Shell Hardwareerkennung" (ShellHWDetection). Wenn man AutoRun ohnehin deaktiviert hat, ist der Dienst unter XP wohl überflüssing und kann deaktivieren werden. Unter Vista und Windows 7 ist der WIA-Dienst als davon abhängig.
Unter XP wirkte sich das nur auf den Moment des Anschließens eines Laufwerks aus. Aktionen, definiert in der autorun.inf, beim manuellen Öffenen eines Laufwerks im Windows Explorer waren weiterhin möglich. Das änderte sich erst mit dem (schon seit August 2008 verfügbaren, aber nicht automatisch verteilten) Microsoft Patch KB950582, siehe hier:
http://support.microsoft.com/kb/953252
Der wird seit Ende Februar 2009 als KB967715 auch automatisch verteilt.
Wenn der Patch installiert ist, sollte der Registry-Wert "HonorAutorunSetting" auf "1" stehen - das entspricht dem gesetzen Haken in AutoRunSetttings.
Alternativ kann man die autorun.inf komlett lahmlegen, also auch verhindern, daß beim Öffnen eines Laufwerks mit autorun.inf im Windows Explorer daraus etwas ausgeführt oder auch nur angeboten wird. Dazu wird ein alter Kompatibilitäts-Mechnismus mißbraucht, der dazu dient, INI-Einstellungen in die Registry umzuleiten.
Siehe hier: US-CERT: Microsoft Windows Does Not Disable AutoRun Properly.
Screenshot (AutoRun vollständig deaktiviert):
Download: autorunsettings.zip
Letztes Update: 27.8.2010
|
|
| |
|
Counter seit Feb. 1998
letzte Änderung: 27. August 2010
Home |