Ausführen-Verlauf löschen – RunMRU-Cleaner für Windows 7, 8.1 und 10 (1903)
Registry-Cleaner programmieren: RunMRU-Cleaner in wenigen Minuten bauen
Uhr
Der Ausführen-Dialog von Windows speichert eingegebene Befehle, eine einfache Löschmöglichkeit existiert nicht. Kein Problem für ein Selbstbau-Tool auf Basis von Batch-Coding.
Mithilfe der Tastenkombination Windows-R lassen Sie den Ausführen-Dialog von Windows erscheinen, worin Sie Befehle zum Aufrufen von Systemfunktionen und Programmen eingeben. Das Fenster merkt sich Ihre Befehle, sodass Sie sie ähnlich einer Browser-Adressleiste beim nächsten Mal nicht erneut zu tippen brauchen. Was häufig praktisch ist, stört eventuell – womöglich wollen Sie diese Chronik nicht mehr haben. Um sie zu löschen, ist wenig selbsterklärend vorzugehen: Öffnen Sie per Rechtsklick auf die Taskleiste deren "Eigenschaften" und wechseln Sie bei Windows 7 auf die Registerkarte "Startmenü". Hier entfernen Sie unter "Datenschutz" den Haken vor "Zuletzt geöffnete Programme im Startmenü speichern und anzeigen" und wählen "Übernehmen" – womit der Ausführen-Verlauf gelöscht wird. Damit Windows künftig wieder einen anlegt, setzen Sie den Haken wieder und bestätigen mit "OK". Bei Windows 8.1 gilt es in den Taskleisten-Eigenschaften zum Tab "Navigation" zu wechseln, worin man im Bereich "Datenschutz" den Haken vor "Zuletzt geöffnete Programme speichern" herausnimmt (danach "Übernehmen" anklicken und eventuell den Haken wieder setzen, sofern Windows wieder eine Chronik anlegen soll, und mit "OK" den Dialog verlassen).
RunMRU-Verlauf eleganter löschen
Entfernen Sie den eingangs im Artikel genannten Haken und speichern, löscht Windows unsichtbar einen Registry-Schlüssel (RunMRU), der den Ausführen-Verlauf enthält. Damit einher geht, dass der Ausführen-Dialog die in ihn vormals eingegebenen Befehle nicht mehr auflistet. Sobald Sie erneut den Win-R-Dialog aufrufen (Befehlseingabe nicht erforderlich), legt Windows den RunMRU-Schlüssel neu an und erstellt darin gegebenenfalls einen Chronikvermerk, sofern Sie einen Befehl eingeben, und zwar als Zeichenfolge-Eintrag. Wollen Sie sich das beschriebene Geklicke in den Taskleisten-Einstellungen ersparen, erstellen Sie eine Batch-Datei, die die Registry von RunMRU befreit. So eine Batch-Datei bereinigt die Registry und ist eine der simpelsten Formen von Registry-Cleanern. Diese Programmgattung analysiert Windows, bereinigt es und verspricht mehr Tempo und Stabilität: Solche Software verfolgt eigentlich innerhalb von Registry-Einträgen hinterlegte Dateipfade zurück und identifiziert so Datenmüll. Existiert das Element im Dateisystem, das in einem Registry-Eintrag angegeben ist, darf der Registry-Cleaner diesen Registry-Eintrag nicht löschen. Verweist ein Registry-Eintrag dagegen auf eine nicht existente Datei, hat das Tuning-Tool einen Löschkandidaten gefunden und entfernt den Registry-Eintrag. Der nachfolgende Registry-Cleaner im Eigenbau arbeitet weniger intelligent. Er agiert im Unterschied etwa zum ...
RunMRU löschen
... CCleaner weniger kontextsensitivund weniger komplex, so löscht er stumpf den Registry-Schlüssel RunMRU, sofern dieser vorhanden ist. Zumindest besitzt das Selbstbauwerkzeug eine Abfrage-Automatik mittels reg query, diese prüft, ob der RunMRU-Schlüssel vorhanden ist – sodass es nur zum Löschvorgang kommt, wenn RunMRU unsichtbar präsent ist (was wiederum der Fall ist, wenn Sie bereits Win-R gedrückt und eventuell einen Ausführen-Dialog-Befehl eingegeben haben).
Der zu löschende Registry-Schlüssel ist unter HKCU angesiedelt, sodass es für den Löschvorgang keine Administrator-Rechte seitens der Batch-Datei braucht:
Der zu löschende Registry-Schlüssel ist unter HKCU angesiedelt, sodass es für den Löschvorgang keine Administrator-Rechte seitens der Batch-Datei braucht:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
Auf Wunsch löschen Sie den Key auch manuell, um die Ausführen-Chronik zu reinigen – wozu Sie den Windows-Registry-Editor mit Windows-R und regedit aufrufen (dies bewerkstelligen Sie so unter Windows 7, Windows 8.1 und Windows 10; ebenso funktioniert das nachfolgende Batch-Programm mit den drei Systemen). Der Vorteil der Regedit-Methode: Auf Wunsch löschen Sie statt des RunMRU-Schlüssels (und damit einhergehend die Chronik aller Ausführen-Befehle) nur einzelne Win-R-Kommandos, indem Sie sie im rechten Regedit-/RunMRU-Bereich auswählen und entfernen.
Registry-Cleaner Lite programmieren
Batch-Dateien lassen sich mit einem beliebigen Texteditor erstellen, der eine freie Format-Wahl beim Speichern zulässt. Der Windows-Editor genügt hierfür meist. Starten Sie ihn mit Windows-R und notepad und kopieren Sie das Folgende hinein (anschließend mit Strg-S speichern und etwa eine Datei namens RunMRU-Cleaner.cmd speichern):
@echo off
title RunMRU-Cleaner: Registry-Cleaner Marke Eigenbau
reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU > NUL 2>NUL
if %errorlevel%==0 GOTO entfernen
if %errorlevel%==1 GOTO nichtsmachen
@echo off
title RunMRU-Cleaner: Registry-Cleaner Marke Eigenbau
reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU > NUL 2>NUL
if %errorlevel%==0 GOTO entfernen
if %errorlevel%==1 GOTO nichtsmachen
:entfernen
echo Ausfuehren-Verlauf bereinigen? Hierzu
pause
reg delete HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU /f
cls
echo Bereinigen abgeschlossen. Zum Verlassen des Tools ...
pause
goto exit
:nichtsmachen
echo Kein Ausfuehren-Verlauf vorhanden.
echo Zum Verlassen des Tools ...
echo.
pause
:exit
echo Ausfuehren-Verlauf bereinigen? Hierzu
pause
reg delete HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU /f
cls
echo Bereinigen abgeschlossen. Zum Verlassen des Tools ...
pause
goto exit
:nichtsmachen
echo Kein Ausfuehren-Verlauf vorhanden.
echo Zum Verlassen des Tools ...
echo.
pause
:exit
Die Bedienung läuft so ab, dass Sie nach dem Aufruf des Programms eine beliebige Taste drücken: Je nachdem, ob das Tool zuvor ermittelt hat, dass der RunMRU-Schlüssel existiert (und somit wohl ein Ausführen-Verlauf vorhanden ist), bewirkt der Tastendruck das Löschen des Schlüssels. Hat die Automatik den Schlüssel nicht gefunden, schließt ein Tastendruck das Tool. In letzterem Fall löscht es nichts aus der Registrierung.
So funktioniert das Tool: Batch-Code erklärt
Damit Sie nicht nur blind Batch-Code in den Editor überführen und durch das Speichern an ein eigenes Tool gelangen, sondern auch etwas lernen, finden Sie hier den obigen Code noch einmal aufgeführt – ergänzt um erläuternde Kommentare:
@echo off -> Unterdrückt, dass unschöne Befehle im gestarteten Batch-Programm erscheinen.
title RunMRU-Cleaner: Registry-Cleaner Marke Eigenbau -> Wie @echo off optional; definiert den Fenster-Titelleistentext.
reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU > NUL 2>NUL
-> reg query fragt ab, ob der dahinter vermerkte Registry-Schlüssel existiert. Wenn der RunMRU-Schlüssel dies tut, existiert wohl ein Ausführen-Verlauf. Wenn er nicht existiert, ist der Verlauf leer.
if %errorlevel%==0 GOTO entfernen
if %errorlevel%==1 GOTO nichtsmachen
-> Hat reg query den RunMRU-Schlüssel gefunden, entspricht das dem Wert 0. Wohingegen bei nicht gefundenem Schlüssel der Wert 1 gesetzt ist. goto bewirkt, dass das Batch-Tool abhängig vom Ergebniss zum passenden der folgenden Abschnitte springt; diese Abschnitte sind mit einem Doppelpunkt (":") am Anfang gekennzeichnet und beliebig benennbar (müssen aber beim errorlevel und im nächsten Absatz mit einleitendem Doppelpunkt identisch benannt sein). Es handelt sich dabei um sogenannte Sprungmarken. Noch eine Anmerkung zum obigen "> NUL 2>NUL": Falls reg query "RunMRU" nicht entdeckt, würde in der Kommandozeile eine wenig schöne "nicht gefunden“-Fehlermeldung erscheinen. Das Unterdrücken Sie mit dem "Nullen" – also dem Umleiten der Info ins Nirwana.
:entfernen
echo Ausfuehren-Verlauf bereinigen? Hierzu ... -> Was nach echo steht, sieht der Nutzer des Batch-Tools als Text angezeigt. Letzterer ist funktionslos und dient der reinen Information.
pause -> pause bewirkt, dass der Nutzer "Drücken Sie eine beliebige Taste ..." sieht und bewusst per Tastendruck fortfahren kann (und zwar mit dem folgenden Code-Schnipsel zum Löschen). Der obige echo-Text "Hierzu ..." macht sich die Aufforderung, eine beliebige Taste zu drücken, zunutze: In der einen Zeile steht "Hierzu ..." und in der Zeile darunter pause-seitig generiert die erwähnte Aufforderung.
reg delete HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU /f -> Löscht den RunMRU-Schlüssel und reinigt somit den Verlauf; der Parameter /f bewirkt, dass das Entfernen ohne Rückfrage und das ohne sonst nötige Drücken der J-Taste durchläuft.
cls -> Entfernt den vorigen Text, der im Batch-Tool zu sehen ist, damit der nachfolgende Text für sich allein steht (sodass es optisch übersichtlicher wirkt).
echo Bereinigen abgeschlossen. Zum Verlassen des Tools ... -> echo zeigt den dahinter stehenden Text an, hier eine Erfolgsmeldung. Zwar findet keine Prüfung statt, ob das obige reg delete-Löschen funktionierte, doch von einem Erfolg ist auszugehen.
pause -> Erläuterung siehe oben, wie immer bei pause ist dadurch nun eine beliebige Taste zu drücken.
goto exit -> Damit das Batch-Tool nicht :nichtsmachen abarbeitet, sondern sich beendet, erfolgt ein Sprung zum Punkt exit.
:nichtsmachen
echo Kein Ausfuehren-Verlauf vorhanden. -> Erläuterungen zu echo, siehe oben.
echo Zum Verlassen des Tools ... -> echo steuert eine zweite Info-Textzeile bei.
echo. -> echo mit Punkt dahinter bewirkt eine Leerzeile, ist also ein visuelles Designelement.
pause -> Der Nutzer soll eine beliebige Taste drücken, um fortzufahren; ein Sprung zu :exit (anders als beim oberen Absatz :entfernen) ist nicht nötig: Bei Batch arbeitet nämlich die Kommandozeile Ihre Befehle von oben nach unten ab (und bei :nichtsmachen folgt als Nächstes :exit); beim obigen :entfernen wiederum ist der Teil :nichtsmachen zu überspringen und darum steht dort oben ein goto exit.
:exit -> Darunter könnte ein Befehl stehen, da keiner angegeben ist, beendet sich das Batch-Tool, wenn es hier ankommt
echo Ausfuehren-Verlauf bereinigen? Hierzu ... -> Was nach echo steht, sieht der Nutzer des Batch-Tools als Text angezeigt. Letzterer ist funktionslos und dient der reinen Information.
pause -> pause bewirkt, dass der Nutzer "Drücken Sie eine beliebige Taste ..." sieht und bewusst per Tastendruck fortfahren kann (und zwar mit dem folgenden Code-Schnipsel zum Löschen). Der obige echo-Text "Hierzu ..." macht sich die Aufforderung, eine beliebige Taste zu drücken, zunutze: In der einen Zeile steht "Hierzu ..." und in der Zeile darunter pause-seitig generiert die erwähnte Aufforderung.
reg delete HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU /f -> Löscht den RunMRU-Schlüssel und reinigt somit den Verlauf; der Parameter /f bewirkt, dass das Entfernen ohne Rückfrage und das ohne sonst nötige Drücken der J-Taste durchläuft.
cls -> Entfernt den vorigen Text, der im Batch-Tool zu sehen ist, damit der nachfolgende Text für sich allein steht (sodass es optisch übersichtlicher wirkt).
echo Bereinigen abgeschlossen. Zum Verlassen des Tools ... -> echo zeigt den dahinter stehenden Text an, hier eine Erfolgsmeldung. Zwar findet keine Prüfung statt, ob das obige reg delete-Löschen funktionierte, doch von einem Erfolg ist auszugehen.
pause -> Erläuterung siehe oben, wie immer bei pause ist dadurch nun eine beliebige Taste zu drücken.
goto exit -> Damit das Batch-Tool nicht :nichtsmachen abarbeitet, sondern sich beendet, erfolgt ein Sprung zum Punkt exit.
:nichtsmachen
echo Kein Ausfuehren-Verlauf vorhanden. -> Erläuterungen zu echo, siehe oben.
echo Zum Verlassen des Tools ... -> echo steuert eine zweite Info-Textzeile bei.
echo. -> echo mit Punkt dahinter bewirkt eine Leerzeile, ist also ein visuelles Designelement.
pause -> Der Nutzer soll eine beliebige Taste drücken, um fortzufahren; ein Sprung zu :exit (anders als beim oberen Absatz :entfernen) ist nicht nötig: Bei Batch arbeitet nämlich die Kommandozeile Ihre Befehle von oben nach unten ab (und bei :nichtsmachen folgt als Nächstes :exit); beim obigen :entfernen wiederum ist der Teil :nichtsmachen zu überspringen und darum steht dort oben ein goto exit.
:exit -> Darunter könnte ein Befehl stehen, da keiner angegeben ist, beendet sich das Batch-Tool, wenn es hier ankommt
Am Ende noch der Hinweis, dass der Batch-Code auch anderweitig umzusetzen ist. Um den Rahmen nicht zu sprengen, ist hier nur eine Code-Variante aufgeführt – es sind einige Umsetzungen mehr möglich, doch letztlich macht das Tool stets dasselbe. Haben Sie Lust auf Batch-Coding bekommen, möchten Sie eventuell hier weiterlesen: "Erfahrungsbericht: Programmieren lernen – mein Einstieg in Batch".