Registrierungsschlüssel oder -wert über ein CMD-Skript löschen?

18

Wie bearbeite ich eine bereits in Produktion befindliche .cmdSkriptdatei, damit das Skript einen bestimmten Registrierungsschlüssel in der Windows-Registrierung löscht?

Erstens, ist das überhaupt möglich, und zweitens (wenn das nicht möglich ist), könnte ich eine .regDatei erstellen und diese Datei mit der .cmdDatei ausführen ?

Aus dem .cmdSkript heraus funktioniert es nicht:

del "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CurrentVersion\SampleKey]"

Diese Methode hat auch bei mir nicht funktioniert:

cmd "\\networkdrive\regfiles\deleteSampleKey.reg"

Dann aus der .regDatei:

Windows Registry Editor Version 5.00
[
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
]
Derek
quelle
1
Die Verwendung einer REG-Datei, auch von einem Netzlaufwerk, sollte problemlos funktionieren. Wenn dies nicht der Fall ist, liegt es vermutlich an der Benutzerkontensteuerung oder anderen Sicherheitsmaßnahmen.
William Hilsum

Antworten:

26

Ich würde empfehlen, den Befehl REG zu verwenden , anstatt REG- Dateien zu erstellen und zu importieren.

reg delete "HKCU\Some\Registry\Path" /f

oder

reg delete "HKLM\Some\Registry\Path" /f

Diese Befehle können direkt in die batch ( .cmd) - Datei eingegeben werden .

Patrick Seymour
quelle
15

Wie hier und hier von Microsoft unter "Entfernen von Registrierungseinträgen" beschrieben, können Sie einen Schlüssel entfernen, indem Sie ein Minuszeichen "-" vor einen Schlüssel wie diesen setzen:

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

Und um einen Eintrag zu entfernen , setzen Sie ein Minuszeichen "-" nach das Zeichen = so:

[HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]
"MyEntry"=-

Hinweis: Dies sind nur Beispielschlüssel. Sie werden nicht wirklich funktionieren.

Bruno Bieri
quelle
In der Tat funktioniert es.
Peter Mortensen
@Peter Mortensen Dies ist noch eine offizielle Referenz. Ich danke Ihnen für das Teilen.
Bruno Bieri
Ironischerweise gibt dieser Microsoft-Support-Link derzeit "Serverfehler in" / app / content "-Anwendung."
SDJUAN
@sdjuan der Microsoft Support Link funktioniert wieder.
Bruno Bieri
4

Ich würde mit einem anderen Skript vermeiden , wie Sie können dies in einer .cmd - Datei mit den tun REG - Befehlen.

Sie können etwas Ähnliches tun:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram"

Wenn Sie nur bestimmte Einträge löschen möchten, sollten Sie /v "EntryName"nach dem Pfad zum Schlüssel ein Argument einfügen. Z.B:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /v "EntryName"

In beiden Fällen wird eine Warnung ausgegeben, bevor die Werte gelöscht werden. Um dies zu vermeiden, sollten Sie das /fArgument am Ende verwenden.

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /f
Marko Vejnovic
quelle
Vielen Dank. Den einzigen Platz im Netz konnte ich finden, der auf einen Unterschlüssel verweist.
square_eyes
3

Ich benutze die folgende Methode. Dies ist Teil eines MRU- Rippers für Windows XP, der möglicherweise Abhilfe schafft. Dies ist der Text einer Stapeldatei, die über CMD oder eine Verknüpfung ausgeführt wird. Es erstellt eine Registrierungsdatei mit einfachen Echoumleitungen und importiert sie dann.

REM *** START REGISTRY SHREDDER ***
ECHO CREATING MRU REGISTRY
ECHO .
 ECHO > "%TMP%\MRUKILL.reg" Windows Registry Editor Version 5.00
ECHO >> "%TMP%\MRUKILL.reg" [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Doc Find Spec MRU]
ECHO >> "%TMP%\MRUKILL.reg" [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FindComputerMRU]

REM ***  IMPORT THAT REG TO WIPE OUT THEM KEYS AND VALUES ****
regedit "%TMP%\MRUKILL.reg"

Ich bin kein Programmierer, ich mache nur ein paar Sachen für mich selbst, deshalb kann ich oft nicht einmal lesen, was ich geschrieben habe, aber ich würde das als Vorlage verwenden, um etwas anderes zu tun.

Die echoswerden >in eine Datei umgeleitet ( ), wobei die Single >für die erste Umleitung steht und >>an dieselbe Datei angehängt wird. Das -Zeichen wird zum Entfernen eines Registrierungseintrags verwendet. Es wäre wahrscheinlich gut, die letzte Zeile wegzulassen und die erstellte Datei vor dem Import anzuzeigen. Der Import kann im Hintergrund erfolgen, aber ich werde das nicht selbst tun.

Haftungsausschluss: Da eine Person beim Entfernen von Registrierungseinträgen schwerwiegende Schäden am System verursachen kann, ist eine Disk-Image-Sicherung erforderlich, die das System zurückgeben kann, wenn das System ausfällt.

Mit den richtigen Berechtigungen, Erhöhungen und einigen Einträgen in der Registrierung kann der Benutzer sie aufgrund ihrer Wichtigkeit nicht nur zerstören, ohne die Berechtigungen festzulegen.

Hier ist ein Teil "Benutzer fragen", der nur zum Spaß hinzugefügt wurde.

ECHO
 REM *** ASK the USER FIRST ***  
ECHO  DO YOU WANT TO DELETE REGISTRY MRUS?
SET /P Choice2=type "Y" to Mangle your registry, - -
ECHO . 
IF /I "%Choice2%"=="Y" GOTO SHREDD
ECHO OK WELL THEN I WON'T
ECHO By By 
   REM *** USER DECIDED AGAINST IT ***
ECHO .
PAUSE
GOTO FINISH
Psycogeek
quelle
1
Unter Vista + ruft diese Methode die Benutzerkontensteuerung auf. und der Benutzer muss diese Aktion akzeptieren oder ablehnen. Wenn Sie das Skript als Admin
Piotr Kula,
1
Sie sollten nicht% USERPROFILE% \ Local Settings \ Temp, sondern% TMP% verwenden. Ersteres funktioniert nur auf englischen Systemen
kinokijuf
@kinokijuf Feexed, sieht auch so viel besser aus. Es wurde wahrscheinlich so eingestellt, um es auf der Systemfestplatte zu belassen, da ich zeitweise Temps auf die Ramdisk oder auf Datenfestplatten gesendet habe.
Psycogeek
1

Ich benutze Windows 7 und das habe ich durch CMD bekommen:

Fri 08/08/2014  8:13:51.72 | C:\Users\MrCMD
>reg.exe delete /?

REG DELETE KeyName [/v ValueName | /ve | /va] [/f]

  KeyName    [\\Machine\]FullKey
    Machine  Name of remote machine - omitting defaults to the current machine.
             Only HKLM and HKU are available on remote machines.
    FullKey  ROOTKEY\SubKey
    ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
    SubKey   The full name of a registry key under the selected ROOTKEY.

  ValueName  The value name, under the selected Key, to delete.
             When omitted, all subkeys and values under the Key are deleted.

  /ve        delete the value of empty value name (Default).

  /va        delete all values under this key.

  /f         Forces the deletion without prompt.

Examples:

  REG DELETE HKLM\Software\MyCo\MyApp\Timeout
    Deletes the registry key Timeout and its all subkeys and values

  REG DELETE \\ZODIAC\HKLM\Software\MyCo /v MTU
    Deletes the registry value MTU under MyCo on ZODIAC

Oder ich denke, wir können mit diesem Algorithmus einige Schlüssel LÖSCHEN oder einige Werte ÄNDERN:

  1. Exportieren Sie den Registrierungsspeicherort der Schlüssel / Werte, die gelöscht / geändert werden sollen, in eine Datei (File01.reg).
  2. Bearbeiten / ändern Sie den entsprechenden Schlüssel / Wert und speichern Sie ihn in einer neuen Datei (File02.reg).
  3. Importieren Sie die geänderte Datei (File02.reg) in die Windows-Registrierung.

Verweis auf die EXPORT-Registrierung.

Fri 08/08/2014  8:24:53.19 | C:\Users\mardir01
>reg.exe export /?

REG EXPORT KeyName FileName [/y]

  Keyname    ROOTKEY[\SubKey] (local machine only).
    ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]
    SubKey   The full name of a registry key under the selected ROOTKEY.

  FileName   The name of the disk file to export.

  /y       Force overwriting the existing file without prompt.

Examples:

  REG EXPORT HKLM\Software\MyCo\MyApp File01.reg
    Exports all subkeys and values of the key MyApp to the file File01.reg

Verweis auf die IMPORT-Registrierung.

>reg.exe import /?

REG IMPORT FileName

  FileName  The name of the disk file to import (local machine only).

Examples:

  REG IMPORT File02.reg
    Imports registry entries from the file File02.reg

Optimale Verbesserungsvorschläge sind willkommen. :) :) :)

Rhak Kahr
quelle