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

如何通过CMD脚本删除注册表键或值?

如何编辑一个已经制作好的.cmd脚本文件,让脚本删除Windows注册表中的某个注册表键?

首先,这是否可能,其次(如果不可能的话),我是否可以创建一个.reg文件,然后用.cmd文件执行?

.cmd脚本中,这个方法对我来说也不可行:

del "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CurrentVersion\SampleKey]"
cmd "\networkdrive\regfiles\deleteSampleKey.reg"

这个方法对我来说也不可行:

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

&001 然后在.reg文件中:

&001

答案 (5)

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

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

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

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

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

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

这里这里由微软在 “删除注册表项 "下描述的那样,你可以通过在像这样的键前加上减号”-“来删除key,而要删除entry,在=char后面加上减号”-“**,像这样的:

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]

_注:这些只是示例键,实际上不会有效果。注:这些只是示例键,实际上并不适用。

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

我会避免使用另一个脚本,因为你可以在.cmd文件中使用REG命令来完成这个操作。例如:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram"

这两条都会导致在删除值之前发出警告。为了避免这种情况,你应该在最后使用/v "EntryName"参数。

3
3
3
2012-01-19 11:25:35 +0000

我用的是下面这个方法。这是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"
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

我不是一个程序员,只是自己做一些批处理的东西,所以经常连自己写的东西都看不懂,但我会把它作为模板来做其他的东西。echos号是用来删除注册表项的。大概是去掉最后一行,在导入前查看它所创建的文件,可能会有不错的效果。导入可以默默地进行,但我自己就不做了。

免责声明:因为一个人删除注册表项会对系统造成一些严重的破坏,所以在系统出现故障时,一个可以返回系统的磁盘镜像备份是很有必要的。

适当的权限,提升,注册表中的一些项不会因为权限的重要性,不设置权限,就直接让用户销毁,

这里有一个 “问用户 "的部分,只是为了好玩而加的。

1
1
1
2014-08-08 05:42:27 +0000

我使用的是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)中。编辑/修改相应的键/值并保存到新的文件(File02.reg)中。 :) :) :)