Удалить ключ реестра или значение с помощью сценария CMD?

18

Как мне отредактировать уже .cmdработающий файл сценария, чтобы скрипт удалил определенный раздел реестра в реестре Windows?

Во-первых, возможно ли это, а во-вторых (если это невозможно), могу ли я создать .regфайл и выполнить этот файл вместе с .cmdфайлом?

Внутри .cmdскрипта он не работает:

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

Этот метод также не работает для меня:

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

Затем из .regфайла:

Windows Registry Editor Version 5.00
[
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
]
Дерек
источник
1
Использование файла .reg, даже с сетевого диска должно работать нормально. Если это не так, то я ожидаю, что это связано с UAC или другими мерами безопасности.
Уильям Хилсум

Ответы:

26

Я бы порекомендовал использовать команду REG , а не создавать и импортировать файлы .reg.

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

или

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

Эти команды могут быть введены непосредственно в .cmdфайл batch ( ).

Патрик Сеймур
источник
15

Как описано здесь и здесь Microsoft в разделе «Удаление записей реестра», вы можете удалить ключ , поставив минус «-» перед таким ключом:

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

И чтобы удалить запись , поместите минус "-" после = char следующим образом:

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

Примечание. Это только примеры ключей. Они на самом деле не будут работать.

Бруно Биери
источник
Действительно, это работает.
Питер Мортенсен
@Peter Mortensen Это еще более официальная ссылка. Спасибо, что поделились.
Бруно Биери
по иронии судьбы эта ссылка поддержки Microsoft в настоящее время выдает «Ошибка сервера в приложении / app / content».
Сджуан
@sdjuan ссылка поддержки Microsoft снова работает.
Бруно
4

Я бы не использовал другой скрипт, так как вы можете сделать это в файле .cmd с помощью команд REG .

Вы можете сделать что-то похожее на это:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram"

Если вы хотите удалить только определенные записи, вам следует добавить /v "EntryName"аргумент после пути к ключу. Е. г .:

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

Оба из них приведут к выдаче предупреждения перед удалением значений. Чтобы избежать этого, вы должны использовать /fаргумент в конце.

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /f
Марко Вейнович
источник
Спасибо. Единственное место в сети, которое я мог найти, которое ссылается на вложенный ключ.
square_eyes
3

Я использую следующий метод. Это часть MRU ripper для Windows XP, которая может помочь. Это текст командного файла, который запускается из CMD или из ярлыка. Он создает файл реестра, используя простые перенаправления эха, а затем импортирует его.

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"

Я не программист, я просто делаю некоторые вещи для себя, поэтому часто не могу даже прочитать то, что написал, но я бы использовал это как шаблон для чего-то другого.

Они echosперенаправляются ( >) в файл, с единственным >для первого перенаправления, и >>для добавления в тот же файл. -Знак используется для удаления записи реестра. Вероятно, было бы хорошо оставить последнюю строку и просмотреть созданный файл перед импортом. Импорт может быть выполнен без вывода сообщений, но я сам этого не сделаю.

Отказ от ответственности: поскольку человек может нанести серьезный ущерб системе, удалив записи реестра, необходима резервная копия образа диска, которая может вернуть систему в случае сбоя системы.

Надлежащие разрешения, повышения прав и некоторые записи в реестре не только позволят пользователю уничтожить их без установки разрешений из-за их важности.

Вот часть «Спроси пользователя», добавленная просто для удовольствия.

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
источник
1
на Vista + этот метод вызовет UAC. и пользователь должен будет принять или отклонить это действие. Выполнение сценария от имени администратора, однако, обойдет это стороной
Петр Кула
1
Вы не должны использовать% USERPROFILE% \ Local Settings \ Temp, но% TMP%. первый работает только на английских системах
kinokijuf
@kinokijuf Feexed, тоже выглядит намного лучше. Вероятно, он был настроен таким образом, чтобы хранить его на системном диске, потому что я время от времени отправлял Temps на ramdisk или на диски с данными.
Psycogeek
1

Я использую Windows 7, и вот что я получил через 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

Или, я думаю, мы можем УДАЛИТЬ некоторые ключи или ИЗМЕНИТЬ некоторые значения этим алгоритмом:

  1. Экспортируйте местоположение реестра ключей / значений, которые мы хотим удалить / изменить, в файл (File01.reg).
  2. Отредактируйте / измените соответствующий ключ / значение и сохраните в новый файл (File02.reg).
  3. Импортируйте этот измененный файл (File02.reg) в реестр Windows.

Ссылка на реестр ЭКСПОРТ.

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

Ссылка на реестр ИМПОРТ.

>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

Яркие идеи для улучшения приветствуются. :) :) :)

Рак Кар
источник