通过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或其他安全措施。
William Hilsum 2012年

Answers:


26

我建议使用REG命令,而不是创建和导入.reg文件。

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

要么

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

这些命令可以直接输入到批处理(.cmd)文件中。


15

Microsoft此处此处 “删除注册表项”下所述,您可以通过在键之前放置减号“-”来删除,如下所示:

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

要删除条目,请在= char后面放置一个减号“-”,如下所示:

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

注意:这些仅是示例键。他们实际上不会工作。


确实,它有效。
彼得·莫滕森


@Peter Mortensen这甚至是更正式的参考。谢谢你的分享。
布鲁诺·比耶里

具有讽刺意味的是,Microsoft支持链接当前给出了“'/ app / content'应用程序中的服务器错误”。
sdjuan

@sdjuan Microsoft支持链接将再次起作用。
布鲁诺·比耶里

4

我会避免使用其他脚本,因为您可以使用REG命令在.cmd文件中执行此操作。

您可以执行以下操作:

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

我使用以下方法。这是Windows XP 的MRU开膛手的一部分,可能会有所帮助。这是从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

1
在Vista +上,此方法将调用UAC。用户必须接受或拒绝此操作。以管理员身份运行脚本将绕过该问题
Piotr Kula 2012年

1
您不应使用%USERPROFILE%\ Local Settings \ Temp,而应使用%TMP%。前者仅适用于英语系统
kinokijuf 2012年

@kinokijuf Feexed,这种方式看起来也更好。可能是这样设置的,以便我将其保留在系统磁盘上,因为有时我已将Temps发送到ramdisk或数据磁盘。
Psycogeek 2012年

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注册表中。

引用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

引用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

欢迎提出更聪明的改进想法。:) :) :)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.