17

Как мне отредактировать уже работающий файл сценария .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
]

5 ответов5

25

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

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

или же

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

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

14

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

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

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

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

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

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
3

Я бы не использовал другой скрипт, так как вы можете сделать это в файле .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
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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .