如何删除registry中的几个值

我试图删除某些registry值。 我已经使用了代码(通过“rojo”) 。

  1. 如果您定义确切的密钥,此代码完美工作。 例如,我想从Run键中删除Logon.vbs。 如果我也想删除Logoff.vbs,似乎我不能使用* .vbs删除这两个。 我将如何做到这一点(删除具有相同扩展名的多个键)?

  2. 一个相关的问题是如何删除保存某些数据的密钥。 例如,我有一个名为Logon的密钥,其中包含数据到C:\ Windows \ Logon.vbs。 我想要删除这个密钥。 当使用上面的例子,这不起作用。

我有这些键的权限,所以这不是问题。 我错过什么或做错了什么?

作为一个例子,我提供了一个截图,例子(1)用红色表示,(2)用蓝色表示。 截图: 注册表截图

我的第一个例子中的代码将如下所示:

@echo off setlocal set "DisableScripts=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" rem get only the first token of each line of "reg query" for /f %%I in ( 'reg query "%DisableScripts%"' ) do ( echo(%%I | findstr /i "Logon.vbs" >NUL && ( rem (if "findstr" didn't exit with an abnormal error code) echo Deleting item %%I reg delete "%DisableScripts%" /v "%%I" /f ) 

这将删除关键“Logon.vbs”就好了。 不过,我也想删除“Logoff.vbs”。 我曾尝试过使用“* .vbs”,但无济于事。

上面的代码也不会删除其中包含Logon.vbs的“脚本”值。 我想我会不知何故必须使用/ D开关…

第一个例子的代码:

 for /f %%a in ('reg query "%DisableScripts%" /s^|findstr /ic:"\.vbs "') do echo reg delete "%DisableScripts%" /v "%%~a" /f 

第二个例子的代码:

 for /f %%a in ('reg query "%DisableScripts%" /s^|findstr /eic:"C:\\logon\.vbs"') do echo reg delete "%DisableScripts%" /v "%%~a" /f 

请注意正则表达式"\.vbs ""C:\\logon\.vbs" 。 使用具有管理员权限的命令行。

好吧,所以我不知道我是如何错过这个。 当然你必须追加 ….在代码下面删除\ Run键下的所有VBS文件:

 @echo off setlocal set "DisableScripts=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" rem get only the first token of each line of "reg query" for /f %%I in ( 'reg query "%DisableScripts%"' ) do ( echo(%%I | findstr /i "%*.vbs" >NUL && ( rem (if "findstr" didn't exit with an abnormal error code) echo Deleting item %%I reg delete "%DisableScripts%" /v "%%I" /f ) ( 

我将稍后检查如何从数据字段中删除某些数据,并在此处发回。