3

我正在尝试删除某些注册表值。我已经使用了代码(通过“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开关......

4

2 回答 2

3

第一个示例的代码:

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". 使用具有管理员权限的命令行。

于 2013-11-14T19:56:08.227 回答
0

好的,所以我不确定我是如何错过这个的。当然,您必须附加% .... 在代码下方删除 \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
    )
(

稍后我将检查如何从“数据”字段中删除某些数据并返回此处。

于 2013-11-14T14:35:36.760 回答