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

18

Jak edytować .cmdplik skryptu już produkcyjnego , aby skrypt mógł usunąć określony klucz rejestru z rejestru systemu Windows?

Po pierwsze, czy jest to w ogóle możliwe, a po drugie (jeśli nie jest to możliwe), czy mogę utworzyć .regplik i uruchomić go z tego .cmdpliku?

Ze .cmdskryptu nie działa:

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

Ta metoda również nie działała dla mnie:

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

Następnie z poziomu .regpliku:

Windows Registry Editor Version 5.00
[
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
]
Derek
źródło
1
przy użyciu pliku .reg nawet z dysku sieciowego powinno działać poprawnie. Jeśli tak nie jest, to spodziewam się, że to zależy od UAC lub innych środków bezpieczeństwa.
William Hilsum

Odpowiedzi:

26

Zalecałbym użycie polecenia REG zamiast tworzenia i importowania plików .reg.

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

lub

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

Te polecenia można wprowadzić bezpośrednio do .cmdpliku batch ( ).

Patrick Seymour
źródło
15

Tak jak opisano tutaj i tutaj przez Microsoft w części „Usuwanie wpisów rejestru”, możesz usunąć klucz , umieszczając znak minus „-” przed kluczem w ten sposób:

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

Aby usunąć wpis , umieść minus „-” po znaku = w ten sposób:

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

Uwaga: są to tylko przykładowe klucze. W rzeczywistości nie będą działać.

Bruno Bieri
źródło
Rzeczywiście to działa.
Peter Mortensen,
1
Innym odniesieniem jest Jak dodawać, modyfikować lub usuwać podklucze rejestru i wartości przy użyciu pliku .reg (Microsoft, KB 310516).
Peter Mortensen,
@Peter Mortensen To jest jeszcze bardziej oficjalne odniesienie. Dziękuję za podzielenie się.
Bruno Bieri,
jak na ironię, że łącze pomocy technicznej Microsoft zapewnia obecnie „Błąd serwera w aplikacji” / app / content ”.
sdjuan
@sdjuan link Microsoft Support znów działa.
Bruno Bieri,
4

Unikałbym używania innego skryptu jak ty Unikałbym to zrobić w pliku .cmd za pomocą poleceń REG .

Możesz zrobić coś podobnego do tego:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram"

Jeśli chcesz usunąć tylko określone wpisy, dodaj /v "EntryName" argument po ścieżce do klucza. E. g:

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

Oba z nich spowodują wyświetlenie ostrzeżenia przed usunięciem wartości. Aby tego uniknąć, powinieneś użyć /fargumentu na końcu.

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /f
Marko Vejnovic
źródło
Dziękuję Ci. Jedyne miejsce w sieci, w którym mogłem znaleźć odniesienia do podklucza.
square_eyes
3

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

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ę dla siebie kilka partii, więc często nie mogę nawet przeczytać tego, co napisałem, ale używałbym tego jako szablonu do robienia czegoś innego.

echosPrzekierowany ( >) do pliku, przy czym pojedynczy >dla pierwszego przekierowania i >>być dołączone do tego samego pliku. -Znak jest używany do usunięcia wpisu rejestru. Prawdopodobnie dobrze byłoby pominąć ostatni wiersz i wyświetlić plik, który utworzył przed importem. Importowanie można wykonać po cichu, ale nie zrobię tego sam.

Oświadczenie: Ponieważ dana osoba może poważnie uszkodzić system usuwając wpisy rejestru, konieczna jest kopia zapasowa obrazu dysku, która może zwrócić system w przypadku awarii systemu.

Odpowiednie uprawnienia, elewacje i niektóre wpisy w rejestrze nie tylko pozwolą użytkownikowi je zniszczyć bez ustawienia 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
Psycogeek
źródło
1
w systemie Vista + ta metoda wywoła UAC. a użytkownik będzie musiał zaakceptować lub odrzucić to działanie. Uruchomienie skryptu jako Admin ominie to
Piotr Kula,
1
nie powinieneś używać% USERPROFILE% \ Ustawienia lokalne \ Temp, ale% TMP%. ten pierwszy działa tylko na systemach angielskich
kinokijuf
@kinokijuf Feexed, również wygląda o wiele ładniej. Prawdopodobnie było tak ustawione, aby trzymało to dla mnie na dysku systemowym, ponieważ czasami wysyłałem Temps na ramdysk lub dyski z danymi.
Psycogeek,
1

Korzystam z systemu Windows 7 i oto, 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

Lub myślę, że możemy USUNĄĆ niektóre klucze lub ZMODYFIKOWAĆ niektóre wartości za pomocą tego algorytmu:

  1. Wyeksportuj lokalizację rejestru kluczy / wartości, które chcemy usunąć / zmodyfikować do pliku (File01.reg).
  2. Edytuj / zmodyfikuj odpowiedni klucz / wartość i zapisz w nowym pliku (File02.reg).
  3. Zaimportuj ten zmodyfikowany plik (File02.reg) do rejestru systemu Windows.

Odniesienie 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

Odniesienie 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ą jaśniejsze pomysły na ulepszenia. :) :) :)

Rhak Kahr
źródło