通过 CMD 脚本删除注册表项或值?

Der*_*rek 24 windows-registry command-line

如何编辑已经在生产中的.cmd脚本文件,以便让脚本删除 Windows 注册表中的某个注册表项?

首先,这是否可能,其次(如果不可能),我可以创建一个.reg文件并使用该.cmd文件执行该文件吗?

.cmd脚本中,它不起作用:

del "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\CurrentVersion\SampleKey]"
Run Code Online (Sandbox Code Playgroud)

这种方法对我也不起作用:

cmd "\\networkdrive\regfiles\deleteSampleKey.reg"
Run Code Online (Sandbox Code Playgroud)

然后从.reg文件中:

Windows Registry Editor Version 5.00
[
-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
]
Run Code Online (Sandbox Code Playgroud)

Pat*_*our 36

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

reg delete "HKCU\Some\Registry\Path" /f
Run Code Online (Sandbox Code Playgroud)

或者

reg delete "HKLM\Some\Registry\Path" /f
Run Code Online (Sandbox Code Playgroud)

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


Bru*_*eri 18

正如Microsoft此处此处在“删除注册表项”下所述,创建一个.reg包含要删除的键或值的文件。

删除键

您可以通过在这样的键前面放置一个连字符(减号)“-”来删除注册表

[-HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]
Run Code Online (Sandbox Code Playgroud)

删除值

要删除注册表,请在 = 字符后放置一个连字符(减号)“-”,如下所示:

[HKEY_LOCAL_MACHINE\SOFTWARE\YourSoft\MyKey]
"MyEntry"=-
Run Code Online (Sandbox Code Playgroud)


小智 8

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

你可以做类似的事情:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram"
Run Code Online (Sandbox Code Playgroud)

如果您只想删除特定条目,则应/v "EntryName"在键路径后添加一个参数。例如:

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /v "EntryName"
Run Code Online (Sandbox Code Playgroud)

这两者都会导致在删除值之前发出警告。为避免这种情况,您应该/f在最后使用参数。

REG DELETE "HKEY_CURRENT_USER\SOFTWARE\SomeProgram" /f
Run Code Online (Sandbox Code Playgroud)


Psy*_*eek 3

我使用以下方法。这是 Windows XP 的MRU Ripper的一部分,可能会有所帮助。这是从 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"
Run Code Online (Sandbox Code Playgroud)

我不是编码员,我只是为自己做一些批量工作,所以我经常甚至无法阅读我写的内容,但我会用它作为做其他事情的模板。

它们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
Run Code Online (Sandbox Code Playgroud)