2012-01-19 11:11:41 +0000 2012-01-19 11:11:41 +0000
18
18

Usunąć klucz rejestru lub wartość za pomocą skryptu CMD?

Jak edytować już istniejący w produkcji plik skryptu .cmd, aby skrypt mógł usunąć określony klucz rejestru w rejestrze Windows?

Po pierwsze, czy jest to w ogóle możliwe, a po drugie (jeśli nie jest to możliwe), czy mogę utworzyć plik .reg i wykonać ten plik z pliku .cmd?

Z wnętrza skryptu .cmd nie działa:

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

Ta metoda też nie działa:

cmd "\networkdrive\regfiles\deleteSampleKey.reg"

Następnie z wnętrza pliku .reg:

Windows Registry Editor Version 5.00
[
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
]

Odpowiedzi (5)

26
26
26
2012-03-26 11:08:49 +0000

Zalecałbym użycie polecenia REG, zamiast tworzyć i importować pliki .reg.

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

lub

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

Polecenia te można wprowadzić bezpośrednio do pliku wsadowego (.cmd).

15
15
15
2016-02-16 14:32:04 +0000

Jak opisane tutaj i tutaj przez Microsoft w sekcji “Usuwanie wpisów rejestru”, można usunąć key poprzez umieszczenie znaku minus “-” przed takim kluczem:

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

A aby usunąć znak entry , należy umieścić znak minus “-” po znaku = tak:

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

Uwaga: To są tylko przykładowe klucze. Tak naprawdę nie zadziałają.

4
4
4
2016-02-16 14:57:58 +0000

Unikałbym używania innego skryptu, ponieważ możesz _zrobić to w pliku .cmd używając komend REG .

Możesz zrobić coś podobnego:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram"

Jeśli chcesz usunąć tylko konkretne wpisy to powinieneś dodać argument /v "EntryName" po ścieżce do klucza. Np.:

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

Obydwa powodują, że przed usunięciem wartości pojawia się ostrzeżenie. Aby tego uniknąć, należy użyć argumentu /f na końcu.

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /f
3
3
3
2012-01-19 11:25:35 +0000

Używam następującej metody. Jest to część rippera MRU dla Windows XP, który może pomóc. Jest to tekst pliku wsadowego, który jest uruchamiany z CMD lub ze skrótu. Tworzy on plik rejestru używając prostych przekierowań echa, a następnie go importuje.

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"

Nie jestem programistą, po prostu robię kilka rzeczy wsadowych dla siebie, więc często nie mogę nawet przeczytać tego, co napisałem, ale użyłbym tego jako szablonu do zrobienia czegoś innego.

echos są przekierowywane (>) do pliku, z pojedynczym > dla pierwszego przekierowania, a >> do dołączenia do tego samego pliku. Znak - jest używany do usunięcia wpisu w rejestrze. Prawdopodobnie dobrze byłoby zostawić ostatnią linię i obejrzeć plik, który utworzył przed importem. Importowanie może odbywać się po cichu, ale nie zrobię tego sam.

Zastrzeżenie: Ponieważ dana osoba może wyrządzić poważne szkody systemowi usuwając wpisy rejestru, konieczne jest wykonanie kopii zapasowej obrazu dysku, która może zwrócić system, gdy system zawiedzie.

Odpowiednie uprawnienia, wzniesienia i niektóre wpisy w rejestrze nie pozwolą użytkownikowi na ich zniszczenie, bez ustawiania uprawnień, ze względu na ich znaczenie.

Oto część “zapytaj użytkownika”, dodana tylko dla zabawy.

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
1
1
1
2014-08-08 05:42:27 +0000

Używam Windows 7 i to jest to, co dostałem przez CMD:

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

Albo, myślę, że możemy USUŃ niektóre klucze lub ZMODYfikuj niektóre wartości przez ten algorytm:

  1. Eksportuj lokalizację w rejestrze kluczy/wartości, które chcemy usunąć/zmianować do pliku (File01.reg).
  2. Edycja/modyfikacja odpowiedniego klucza/wartości i zapis do nowego pliku (File02.reg).
  3. Import zmodyfikowanego pliku (File02.reg) do rejestru Windows.

Odwołanie do rejestru EXPORT.

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

Odwołanie do rejestru IMPORT.

>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

Mile widziane są lepsze pomysły na poprawę. :) :) :)