Tools für Windows
 
Home

  English Version of this page
 
  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
- Mittels Packet-Manager verteilen

Nicht erlaubt:
- Verändern von Dateien
- zum Download mittels einer "Downloader-Software" anbieten

Um Spenden bitte ich nicht, aber wer unbedingt möchte:
PayPal

 

  USB Device Tree Viewer
 
Hat seine eigene Seite bekommen: UsbTreeView

Download:
Win32:
https://www.uwe-sieber.de/files/UsbTreeView_Win32.zip
x64:
https://www.uwe-sieber.de/files/UsbTreeView_x64.zip

 

  RestartUsbPort V1.2.1 - Startet einen USB-Port neu

RestartUsbPort veranlasst einen Neustart eines USB-Ports per Kommandozeile. Ob das nützlich ist, kann man zunächst im USB Device Tree Viewer testen (Rechts-Klick auf das Gerät -> "Restart Port").
Im Gegensatz zu einem Neustart des Gerätes über den Geräte-Manager wird der Treiber des Gerätes nicht um Erlaubnis gefragt, somit funktioniert ein Reset des Port immer. Es enspricht eher einem erneuten Anschließen des Gerätes.
Usage:
RestartUsbPort [PortId] [-u] [-l] [-na] [-d:nnnn] [-w:nnnn]
PortId can be
 a device instance ID (in quotation marks because it contains the & char)
 a driver key name
 a device location info
 a friendly device name (in quotation marks if it contains space or &)
 a port chain in UsbTreeView style
-u      uninstall USB device before port reset
-l      lists USB ports that can be restarted
-na     no about info
-n      no wait for keypress when started standalone
-w:nnnn waits nnnn milliseconds on end
-d:nnnn delays nnnn milliseconds on start
Samples:

RestartUsbPort -l

RestartUsbPort "USB\VID_0781&PID_5580\AA010319131128161470"

RestartUsbPort {36fc9e60-c465-11cf-8056-444553540000}\0007

RestartUsbPort Port_#0002.Hub_#0008

RestartUsbPort "Sandisk Extreme"

RestartUsbPort 1-4-2

RestartUsbPort 1-4-2 -u

RestartUsbPort 1-4-2 -w:1000
Wenn das Zeichen & im Parameter benutzt wird (also immer bei einer DeviceID), muss das in Anführungzeichen gesetzt werden, weil der Kommandoprozessor das Zeichen & sonst als Trenner für separate Kommandos interpretiert.

Admin-Rechte sind unter Windows 8, 10 und 11 nötig, oder eine aktive USBDLM-Kommandoschnittstelle.

Ab V1.1 werden auch Geräte mit Problem-Code gefunden.

Rückgabewerte (Errorlevel):

0 - successfully restarted the USB port
1 - no parameters
2 - invalid parameters
3 - given ID not found or no device is attached to the port
4 - restart tried but failed

Hintergrund-Infos

Das Programm ruft IOCTL_USB_HUB_CYCLE_PORT auf, was einen Reset des USB-Ports auslöst, lt. Microsoft wird ein "power-cycle" durchgeführt, der Port also kurz stromlos gemacht. Das scheint aber wenn überhaupt nur sehr kurz zu sein...
Das funktioniert unter Windows XP mit den Microsoft Standard-Treibern. Treiber anderer Hersteller antworten mit Fehler ERROR_UNKNOWN_FUNCTION.
Unter Vista und Windows 7 wird das nicht mehr unterstützt, es gibt immer Fehler ERROR_NOT_SUPPORTED.
Seit Windows 8 funktioniert es wieder, hier aber nur mit Administrator-Rechten. Ohne diese gibt's wie unter Windows 7 ERROR_NOT_SUPPORTED bzw. ab Windows 10 version 1903 ERROR_GEN_FAILURE, was beides irreführend ist, da es ja nur um fehlende Berechtigungen geht.

Download: RestartUsbPort.zip

Letztes Update: 17.06.2023

Bei Codeproject habe ich gezeigt, wie man IOCTL_USB_HUB_CYCLE_PORT einsetzt: How to restart a USB port

 

  ListUsbDevs V1.0.0 - Listet USB-Geräte auf
 
ListUsbDevs ist eine Konsolen-Anwendung, die USB-Geräte auflisted oder prüft, ob eines mit bestimmten Eigenschaften angeschlossen und aktiv ist. Das Ergebnis wird mittels Rückgabewert (aka Errorlevel) mitgeteilt:
Usage:
ListUsbDevs [ID][ID] [-na] [-w:nnnn]
ID can be
 a device instance ID (in quotation marks because it contains the & char)
 a driver key name
 a device location info
 a friendly device name (in quotation marks if it contains space or &)
 a port chain in UsbTreeView style
-na     no about info
-w:nnnn waits nnnn milliseconds on end
Wildcards können genutzt werden. Um einen Treffer zu ergeben müssen alle übergebenen IDs auf ein Gerät passen.
Beispiele:

ListUsbDevs

ListUsbDevs "USB\VID_0781&PID_5580\AA010319131128161470"

ListUsbDevs "USB\VID_0781&PID_5580\*" 1-4-2

ListUsbDevs {36fc9e60-c465-11cf-8056-444553540000}\0007

ListUsbDevs Port_#0002.Hub_#0008

ListUsbDevs "Sandisk Extreme"

ListUsbDevs 1-4-2

ListUsbDevs 1-4-2 -w:1000
Wenn das Zeichen & im Parameter benutzt wird (also immer bei einer DeviceID), muss das in Anführungzeichen gesetzt werden, weil der Kommandoprozessor das Zeichen & sonst als Trenner für separate Kommandos interpretiert.

Rückgabewerte (Errorlevel):

0 - mindestens ein passendes Gerät gefunden
1 - keine Parameter
2 - ungültige Parameter
3 - Gerät gefunden aber (mindestens eins davon) mit einem Problem-Code im Geräte-Manager
4 - kein passendes Gerät gefudden

Download: ListUsbDevs.zip

Letztes Update: 26.02.2023

 

  Device Cleanup Tool V1.2.1 - Nicht angeschlossene Geräte löschen
 
Jedes einmal angeschlossene Gerät hinterläßt in der Geräteverwaltung eine Reihe von Einträgen, damit es beim nächsten Anschließen nicht als neues sondern als bekanntes Gerät mit seinen vorherigen Einstellungen eingebunden wird. Allerdings soll es Probleme geben, wenn die Anzahl gegen 1000 geht.
DeviceCleanup listet alle derzeit nicht angeschlossenen Geräte auf, die der Windows Gerätemanager kennt und bietet die Möglichkeit, einzelne, mehrere oder alle zu löschen.

Die "Last used" Zeit kommt aus der letzten Änderung des Registry-Schlüssels des jeweiligen Gerätes unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum, auf manchen Windows-Installationen wird die Änderungszeit beim Systemstart oder auch zyklisch im Betrieb gesetzt.

Screenshot:

devicecleanup

Download: DeviceCleanup.zip

Letzes Update: 30.12.2021

 

  Device Cleanup Cmd V1.2.0 - Nicht angeschlossene Geräte löschen
 
Das ist die Kommandozeilen-Version von DeviceCleanup, siehe oben.
DeviceCleanup V1.2.0
Uninstalls non-present devices
Freeware by Uwe Sieber - www.uwe-sieber.de

Usage:
DeviceCleanupCmd pattern1 [pattern2] [patternN] [-e:excludepattern1][-t][-s][-m:age][-n]
-e:excludepattern  pattern not to remove
-t  test only
-s  skip creation of a system restore point
-m:age  minimum 'age' (last use of the device must be at least that old)
-v  verbose
-n  no wait when finished

Patterns are device IDs, device classes or friendly names. Wildcards can be used.

Samples:
remove all devices whose device IDs begin with HID\VID_045E
DeviceCleanupCmd HID\VID_045E*

remove all devices whose device IDs contain VID_045E
DeviceCleanupCmd *VID_045E*

remove all bluetooth devices but not COM9 and COM10
DeviceCleanupCmd BTH* -e:"* (COM9)" -e:"* (COM10)"

remove all non present devices whose device class is Media
DeviceCleanupCmd Media

remove all devices not used for 1 year or more (m - month, d - days, i - minutes)
DeviceCleanupCmd * -m:1y

remove all devices
DeviceCleanupCmd *

show which devices would be removed (test mode)
DeviceCleanupCmd -t *

Non-PnP devices are not removed.

Der Zeitpunkt der 'letzten Nutzung' eines Gerätes kommt aus der letzten Änderung des Registry-Schlüssels des jeweiligen Gerätes unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum, auf manchen Windows-Installationen wird die Änderungszeit aller Geräte beim Systemstart oder auch zyklisch im Betrieb gesetzt, hat also keine Aussagekraft. Mit DeviceCleanup kann man sich die Zeiten ansehen.

Download: DeviceCleanupCmd.zip

Letzes Update: 28.12.2021

Ein verwandtes Tool ist DriveCleanup, dass für Laufwerke optimiert ist und einige zuätzliche Registry-Einträge bereinigt.

 

  CloseWindow V0.3 - Fenster schließen
 
CloseWindow schließt Fenster per Kommandozeile. Zum Identifizieren des Fenster muß entweder der Fenster-Text (die Titelzeile) oder die Fenster-Klasse angegeben werden.
CloseWindow -text="Fenstertext" -class="Fensterklasse"
Wildcards können benutzt werden.

Beispiel: Alle Windows Taschenrechner schließen

closewindow -text="Rechner" -count=999
Beispiel: Explorer-Fenster (XP) für Laufwerk U: schließen
closewindow -text="U:\*" -class="ExploreWClass"
Beispiel: Explorer-Fenster (Vista+) für Laufwerk U: schließen
closewindow -text="U:\*" -class="CabinetWClass"
Die Fensterklasse zeigt z.B. mein Tool WinInfo

Das Ganze funktioniert nur innerhalb eines Nutzer-Kontextes: Um ein unter Vista+ mit UAC "Als Administrator" gestartetes Programm zu schließen muss auch CloseWindow so gestartet werden.

Download: closewindow.zip

Letzes Update: 20.2.2016

 

  RunAsSystem V1.3.6 - startet einen Prozess im SYSTEM-Kontext
 
RunAsSystem ist hilfreich, wenn Administrator-Rechte nicht ausreichen. So gibt es Registry-Schlüssel, deren Besitzer zwar der Administrator ist, dieser aber weder Schreibrechte noch das Recht zum Setzen der Berechtigungen (WRITE_DAC) hat.
Die Explorer.exe zu starten führt nur zum Aktivieren der vorhanden Explorer-Instanz, wenn man einen Dateimanager mit Systemrechten braucht, nehme man einen anderen, z.B. den 7-Zip-FileManager oder FAR.
RunAsSystem startet den Prozess mit dem ihm gegebenen Fensterstil und Prozesspriorität, beides kann per Kommandozeilenparameter überstimmt werden.
RunAsSystem wartet standardmäßig auf die Beendigung des gestarteten Prozesses und reicht dann dessen Rückgabewert (ErrorLevel) durch. RunAsSystem ist aber eine Windows-Anwendung, in Batch-Datei muß zum Warten ein "start /wait" davor gebaut werden.
Mit -nowait kehrt es sofort mit 0 zurück wenn der Prozess gestartet wurde.
Bis V1.2 funktionierte das unter XP nur, wenn man zuvor mal den Sysinternals ProcessExplorer laufen hatte, der ändert offenbar die Berechtigungen für Prozesse, um alle gewünschten Infos zu ermitteln, versäumt aber, den alten Zustand wiederherzustellen.
Manche Programme beenden sich gleich wieder (wahrscheinlich weil ihre Einstellungen aus dem Nutzer-Kontext fehlen), aber die Windows Konsole und der Registry-Editor funktionieren.

Usage:

RunAsSystem [-nowait] [-min|-max|-normal|-noact|-hid] [-low|-below|-normal|-above|-high] "executable" [params for executable]
Beispiele:
RunAsSystem "%windir%\regedit.exe"

RunAsSystem "%windir%\System32\cmd.exe" /k dir /s "C:\System Volume Information"

Download: RunAsSystem.zip

Letztes Update: 03.01.2023

 

  HidRun V1.0 - startet ein Programm mit unsichbarem Fenster
 
HidRun startet ein Programm mit 'verstecktem' Fenster indem es das Flag SW_HIDE übergibt.
Manche Programm ignorieren das aber!
Nutzung:
HidRun "<exe to start>" <parameters>
Beispiele:
hidrun calc

"C:\Meine Tools\HidRun.exe" "C:\Windows\System32\cmd.exe" /c del "%temp%\*" /s /q
Hinweis: Auf x64 Windows wird die Win32-Version von HidRun von C:\Windows\System32 nacht C:\Windows\SysWOW64 umgeleitet.

HidRun ist keine Konsolen-Anwendung, Windows erzeugt dafür also kein neues Konsolenfenster.
Es wartet nicht auf das Ende des gestarteten Programms, kann dessen Rückgabewert also nicht weiterreichen.

Der Rückgabewert (Errorlevel) ist 0 wenn das Programm gestartet wurde, sonst größer 0.

Download: HidRun.zip

Letztes Update: 11 Jan 2023

 

  FindEXE V0.5 - Konsolenprogramm, das den vollständigen Pfad zu einer ausführbaren Datei zeigt
 
Beispiel:
FindExe calc

C:\Windows\System32\calc.exe


FindExe test.txt

C:\Windows\System32\notpad.exe

Download: findexe.zip

Letztes Update: 15.06.2017

 

  Sleep - Konsolenprogramm das n Millisekunden wartet
 
Beispiel zum Warten für 1 Sekunde:
sleep 1000

Download: sleep.zip

Letztes Update: 07.06.2007

 

  ConsoleNoClose - Deaktiviert den "Schließen" Button von Konsolen-Fenstern
 
ConsoleNoClose Deaktiviert den "Schließen" Button eines oder aller Konsolen-Fenster wenn sie aktiv werden.

Es läuft unsichtbar im Hintergrund.

Um eine vorherige Instanz zu beenden starte man es mit Parameter /R (remove, zeigt eine Message-Box) oder mit /RH /remove hidden, ohne Message-Box).

Mit /1 gestartet wird nur genau ein Konsolen-Fenster behandelt (das nachste das aktiv wird), dann beendet sich ConsoleNoClose.

Mit /ALL gestartet deaktiviert es alle Einträge im System-Menü des Konsolen-Fensters, man kann somit nicht mehr schließen, minimieren, maximieren und auf den Einstellungen zugreifen.

Unter Vista, Windows 7..11 muss es "Als Administrator" gestartet werden, wenn es Konsolen-Fenster behandeln soll die auch "Als Administrator" laufen.

Beispiel um alle Menüeinträge (und somit Schaltflächen) des nächsten Konsolen-Fensters zu deaktivieren:

ConsoleNoClose /1 /ALL

Download: ConsoleNoClose.zip

Letztes Update: 12.11.2017

 

  BinHexDez - Umrechner für Hexadezimal, Dezimal und Binär
 
binhex

Download: BinHex.zip

Letztes Update: 08.05.2021

 

  COM Name Arbiter Tool V1.0.5 - Reservierte COM-Ports freigeben
 
Immer wenn ein neues Gerät installiert wird, das einen COM-Port bereitstellt, ordnet Windows dem COM-Port die erste noch nie für einen COM-Port benutzte Nummer zu.
Jede COM-Port-Nummer merkt sich Windows als benutzt damit niemals zwei Geräte dieselbe Nummer haben.
Leider bleiben selbst die Ports schon längst deinstallierter Geräte als reserviert markiert, so dass man hier ein lästiges endloses Hochzählen der Portnummern erhält.
Erst unter Windows 10 Version 1903 wurde die Verwaltung so erweitert, dass Windows beim Deinstallieren eines COM-Ports auch dessen Reservierung aufhebt, was dieses Tool überflüssig macht :-)

Die Rerservierung speichert Windows in der Registry im Wert ComDB unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter
daher der Name des Programms.
Standardmäßig sind dort 32 Bytes mit je 8 Bit hinterlegt, jedes gesetzte Bit steht für einen reservierten COM-Port von 1 bis 256. Wenn 256 Ports überschritten werden, können es auch mehr als 32 Bytes werden.
Windows 10 hat hier ab Version 1903 den Unter-Schlüssel "Devices", wo COM-Ports und deren Device-Path hinterlegt sind und es so beim Löschen eines COM-Port-Gerätes aus dem Geräte-Manager dessen COM-Port-Reservierung aufheben kann.

Die einzige Auswirkung einer entfernten Reservierung ist, dass die Nummer bei einem neuen Gerät wieder vergeben werden kann (oder manuell bei einem vorhandenen). So lange man nicht zwei Geräte mit gleichen Portnummern anschließt gibt es kein Problem. Tut man es dennoch gibt eines von drei Problemen:

  • Das zweite Gerät startet nicht, weil es den Symbolic-Link mit dem COM-Port-Namen nicht anlegen kann
  • Das zweite Gerät startet zwar, ist aber nicht nutzbar weil es den Symbolic-Link mit dem COM-Port-Namen nicht anlegen kann
  • Das zweite Gerät startet, löscht den Symbolic-Link des ersten Gerätes und legt ihn neu an (so macht es FTDI)
Also beim Aufräumen nicht übertreiben!

Das Tool zeigt mindestens 256 Ports, wenn ein Kernel-Name (z.B. \Device\Serial0) dahinter steht, ist das zugehörige Gerät gerade angeschlossen (oder dessen Treiber hat beim Entfernen nicht aufgeräumt). Ein gesetzter Haken heißt "reserviert".
Man kann dann Reservierungen durch gezieltes "Abhaken" aufheben oder durch Klick auf "Clear unused Reservations" die Haken bei allen derzeit nicht angeschlossenen Ports entfernen.
"Remove non-present Devices" deinstalliert alle gerade nicht angeschlossenen COM-Port-Geräte.
Alles wird sofort und ohne Rückfrage ausgeführt und in die Registry geschrieben (braucht Admin-Rechte). F5 aktualsiert die Liste, was aber meist automatisch geschieht.

Mit dem Paramter /c gestartet setzt es aktuell nicht vorhandene Ports auf "verfügbar" und endet ohne Dialog (entspricht dem Klick auf "Clear unused reservations").
Mit dem Paramter /r gestartet deinstalliert es alle gerade nicht angeschlossenen COM-Port-Geräte (enspricht dem Klick auf "Remove non-present devices").
In beiden Fällen wird kein Fenser angezeigt.

Screenshot:

comnamearbitertool

Download: ComNameArbiterTool.zip

Letztes Update: 07.11.2021

 

  CreateFile-Tester - Testen der API-Funktion CreateFile
 
Der CreateFile-Tester nützlich, um auf die Schnelle verschiedene Aufrufparameter der Windows-API-Funktion CreateFile zu testen, aber auch, um testweise eine Datei durch exklusives öffen zu blockieren und das Verhalten von Anwendungen zu überprüfen.
Außerdem kann eine Reihe von Win32-API-Funktionen und DeviceIoControl-Aufrufen getestet werden. Die Tooltips der Buttons zeigen Hinweise zum Aufruf.

Screenshot:

createfiletest

Download: CreateFileTest.zip
VB6-Source: CreateFileTest_src.zip

Letzes Update: 27.10.2020

 

  DeviceIoControl Code Decoder
 
Decodiert DeviceIoControl-Hex-Werte oder Namen wie hier aufgelistet.

Screenshot:

screenshot

screenshot

Download: IoctlDecoder.zip

Letztes Update: 22 Feb 2016

 

  LogWindowAtPoint - Loggt Fenster an einer bestimmten Position
 
Dieses Tool ist hilfreich um kurzzeitig 'aufblitzende' Fenster zu identifizieren.
Um den Pfad zur EXE eines Fensters zu ermitteln das "Als Administrator" läuft, braucht es selbst Admin-Rechte, sonst kann und der name der EXE ermittelt werden.

Screenshot:

logwindowatpoint

Ab V1.1 kann per Kommandozeile die zu überwachende Koordinaten und der Poll-Intervall übergeben werden.
Beispiel:
LogWindowAtPoint 5 1270 15

Download: logwindowatpoint.zip

Letztes Update: 11.06.2023

 

  LogForegroundWindow - Loggt welche Fenster aktiv werden
 
Dieses Tool ist hilfreich um kurzzeitig aktiv werdende Fenster zu identifizieren, die der aktiven Anwendung den Fokus stehlen.
Um den Pfad zur EXE eines Fensters zu ermitteln das "Als Administrator" läuft, braucht es selbst Admin-Rechte, sonst kann und der name der EXE ermittelt werden.

Screenshot:

logforegroundwindow.png

Download: logforegroundwindow.zip

Letztes Update: 11.06.2023

 


Impressum

Home