无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 9674|回复: 23
打印 上一主题 下一主题

[求助] 求一段批处理代码,查找指定注册表下的子项的值,如果指定的值为abc,则删除该项

[复制链接]
跳转到指定楼层
1#
发表于 2020-11-7 00:17:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如
HKLM\SOFTWARE\dfsfsf
项下有如下几个子项
  1. SecurityHealth    REG_EXPAND_SZ    %windir%\system32\SecurityHealthSystray.exe
  2.     RTHDVCPL    REG_SZ    "C:\Program Files\Realtek\Audio\HDA\RtkNGUI64.exe" -s
  3.     IgfxTray    REG_SZ    "C:\Windows\system32\igfxtray.exe"
  4.     HotKeysCmds    REG_SZ    "C:\Windows\system32\hkcmd.exe"
  5.     Persistence    REG_SZ    "C:\Windows\system32\igfxpers.exe"
复制代码


查找到值为"C:\Windows\system32\igfxpers.exe"的项Persistence,删除该项HKLM\SOFTWARE\dfsfsf\Persistence
2#
发表于 2020-11-7 03:02:18 | 只看该作者
Test.bat
Test.png
Test.reg

OS: Windows 7 X64

Test.png (94.43 KB, 下载次数: 123)

Test.png

Test.rar

89.42 KB, 下载次数: 7, 下载积分: 无忧币 -2

点评

不是删dfsfsf,是删Persistence  详情 回复 发表于 2020-11-7 13:06
回复

使用道具 举报

3#
发表于 2020-11-7 08:09:52 | 只看该作者
@Echo Off
For /f "tokens=2,*" %%i in ('reg query "HKLM\SOFTWARE\dfsfsf" /v "Persistence"') do Set pt=%%j
if "%pt%" NEQ "C:\Windows\system32\igfxpers.exe"  goto end
reg delete "HKLM\SOFTWARE\dfsfsf" /v "Persistence" /f
:end
exit

红毛老大,看看这样行不?

点评

这个好像直接exit了  发表于 2020-11-7 13:08
回复

使用道具 举报

4#
发表于 2020-11-7 08:20:05 | 只看该作者
  1. REM 方法1
  2. reg query "HKLM\SOFTWARE\dfsfsf"|findstr /C:" Persistence "|findstr /C:"C:\Windows\system32\igfxpers.exe" &&reg delete "HKLM\SOFTWARE\dfsfsf" /v "Persistence"

  3. REM 方法2,注意中括号内是 空格加TAB
  4. reg query "HKLM\SOFTWARE\dfsfsf"|findstr /R "^[         ]*Persistence.*[         ]*C:\\Windows\\system32\\igfxpers.exe" &&reg delete "HKLM\SOFTWARE\dfsfsf" /v "Persistence"
复制代码

点评

不是直接删Persistence,是找到值为"C:\Windows\system32\igfxpers.exe"的项,删掉该Persistence项。如果是sdfsfdsaf项,就删sdfsfdsaf项的意思。项不固定所以才想去找一下  详情 回复 发表于 2020-11-7 13:11
回复

使用道具 举报

5#
发表于 2020-11-7 10:51:40 来自手机 | 只看该作者
pecmd你都能出教程了,这个你不会?
回复

使用道具 举报

6#
发表于 2020-11-7 10:57:34 | 只看该作者
感觉好像号被盗了
回复

使用道具 举报

7#
 楼主| 发表于 2020-11-7 11:56:50 来自手机 | 只看该作者
我真不会批处理,真的不会,没盗号
回复

使用道具 举报

8#
 楼主| 发表于 2020-11-7 13:06:47 | 只看该作者
plusv 发表于 2020-11-7 03:02
Test.bat
Test.png
Test.reg

不是删dfsfsf,是删Persistence

点评

红毛樱木>不是删dfsfsf,是删Persistence 你看 2F 图,是删 Persistence ----------------------------------------- 红毛樱木>不是直接删Persistence,是找到值为"C:\Windows\system32\igfxpers.exe"的项,  详情 回复 发表于 2020-11-8 01:53
回复

使用道具 举报

9#
 楼主| 发表于 2020-11-7 13:11:09 | 只看该作者

不是直接删Persistence,是找到值为"C:\Windows\system32\igfxpers.exe"的项,删掉该Persistence项。如果是sdfsfdsaf项,就删sdfsfdsaf项的意思。项不固定所以才想去找一下
回复

使用道具 举报

10#
发表于 2020-11-7 13:44:50 | 只看该作者
本帖最后由 junyee 于 2020-11-7 13:47 编辑
红毛樱木 发表于 2020-11-7 13:11
不是直接删Persistence,是找到值为"C:\Windows\system32\igfxpers.exe"的项,删掉该Persistence项。如果 ...
  1. @echo off

  2. REM reg query HKLM\SOFTWARE\dfsfsf|findstr /C:"C:\Windows\system32\igfxpers.exe"

  3. REM 小心最好不要有空格
  4. set MK=HKLM\SOFTWARE\dfsfsf
  5. set kw=C:\Windows\system32\igfxpers.exe

  6. reg query "%MK%"|for /f  %%i in ( 'findstr /C:"%kw%"' ) do @(
  7.   echo [WARN]删除subkey:%%i
  8.   start /wait reg delete "%MK%" /v "%%i" /f
  9. )

  10. pause
复制代码


R.zip

814 Bytes, 下载次数: 3, 下载积分: 无忧币 -2

win7_x86 测试

点评

"%SystemDrive%\Windows\System32\mshta.exe" vbscript:createobject("wscript.shell").run("""%SystemDrive%\Windows\run.bat"" h",0,true)(window.close) 大佬,注册表值是这种的,很长串的,好像不行,带很多  详情 回复 发表于 2020-11-7 13:52
OK了,谢谢。我试试搞点复杂的看看  详情 回复 发表于 2020-11-7 13:48
回复

使用道具 举报

11#
 楼主| 发表于 2020-11-7 13:48:30 | 只看该作者

OK了,谢谢。我试试搞点复杂的看看
回复

使用道具 举报

12#
 楼主| 发表于 2020-11-7 13:52:20 | 只看该作者

"%SystemDrive%\Windows\System32\mshta.exe" vbscript:createobject("wscript.shell").run("""%SystemDrive%\Windows\run.bat"" h",0,true)(window.close)

大佬,注册表值是这种的,很长串的,好像不行,带很多特殊符号

点评

看你这句话也在用VBS,如果环境允许运行VBS的话,那可以比批处理更高效地处理各种特殊符号  详情 回复 发表于 2020-11-7 14:04
你导出个 reg 我试试啊。 不过批处理处理一些特殊字符就麻烦些。  详情 回复 发表于 2020-11-7 13:57
回复

使用道具 举报

13#
发表于 2020-11-7 13:57:01 | 只看该作者
红毛樱木 发表于 2020-11-7 13:52
"%SystemDrive%\Windows\System32\mshta.exe" vbscript:createobject("wscript.shell").run("""%SystemDr ...

你导出个 reg 我试试啊。

不过批处理处理一些特殊字符就麻烦些。

点评

出来吃饭了,等下  详情 回复 发表于 2020-11-7 14:14
回复

使用道具 举报

14#
发表于 2020-11-7 14:04:57 | 只看该作者
红毛樱木 发表于 2020-11-7 13:52
"%SystemDrive%\Windows\System32\mshta.exe" vbscript:createobject("wscript.shell").run("""%SystemDr ...

看你这句话也在用VBS,如果环境允许运行VBS的话,那可以比批处理更高效地处理各种特殊符号

点评

这vbs学了两天才搞出来这个,还是不会太菜了  详情 回复 发表于 2020-11-7 14:15
回复

使用道具 举报

15#
 楼主| 发表于 2020-11-7 14:14:15 来自手机 | 只看该作者
junyee 发表于 2020-11-7 13:57
你导出个 reg 我试试啊。

不过批处理处理一些特殊字符就麻烦些。

出来吃饭了,等下
回复

使用道具 举报

16#
 楼主| 发表于 2020-11-7 14:15:03 来自手机 | 只看该作者
9zhmke 发表于 2020-11-7 14:04
看你这句话也在用VBS,如果环境允许运行VBS的话,那可以比批处理更高效地处理各种特殊符号

这vbs学了两天才搞出来这个,还是不会太菜了
回复

使用道具 举报

17#
发表于 2020-11-7 14:22:52 | 只看该作者
本帖最后由 junyee 于 2020-11-7 17:10 编辑

注意 %号 要用 %% 转义。

  1. @echo off

  2. REM http://bbs.wuyou.net/forum.php?mod=viewthread&tid=422795&page=1&extra=#pid4171194

  3. REM 小心最好不要有特殊字符
  4. set mk=HKLM\SOFTWARE\dfsfsf
  5. set kw="%%SystemDrive%%\Windows\System32\mshta.exe" vbscript:createobject("wscript.shell").run("""%%SystemDrive%%\Windows\run.bat"" h",0,true)(window.close)

  6. echo.

  7. REM setlocal enabledelayedexpansion
  8. set kw=%kw:"="%
  9. REM set kw=%kw:\=\"%

  10. REM 不借助临时文件搞不定了,你这个字符串里同时有 % " ()  这些批处理忌讳字,尤其是小括号
  11. reg query “%mk%"|findstr /c:"%kw%" >%TEMP%\find_key.tmp

  12. for /f %%i in (%TEMP%\find_key.tmp) do (
  13.   echo [WARN] 删除 %MK%\%%i
  14.   reg delete "%MK%" /v "%%i" /f
  15. )
  16. pause&&goto :EOF
复制代码

R.zip

1.09 KB, 下载次数: 8, 下载积分: 无忧币 -2

点评

大佬66666  详情 回复 发表于 2020-11-7 14:42
回复

使用道具 举报

18#
 楼主| 发表于 2020-11-7 14:42:23 | 只看该作者
junyee 发表于 2020-11-7 14:22
注意 %号 要用 %% 转义。

大佬66666
回复

使用道具 举报

19#
发表于 2020-11-8 01:53:33 | 只看该作者
红毛樱木 发表于 2020-11-7 13:06
不是删dfsfsf,是删Persistence

红毛樱木>不是删dfsfsf,是删Persistence

你看 2F 图,是删 Persistence

-----------------------------------------

红毛樱木>不是直接删Persistence,是找到值为"C:\Windows\system32\igfxpers.exe"的项,删掉该Persistence项。
红毛樱木>如果是sdfsfdsaf项,就删sdfsfdsaf项的意思。项不固定所以才想去找一下

没什么差别,
批处理改一下就可以了.



Test2.rar

263 Bytes, 下载次数: 11, 下载积分: 无忧币 -2

回复

使用道具 举报

20#
发表于 2020-11-8 08:30:21 | 只看该作者
本帖最后由 tools241 于 2020-11-8 08:48 编辑

reg QUERY HKLM\SOFTWARE\dfsfsf /v Persistence  >X:\tmp.txt
for /f "tokens=*" %%i in (X:\tmp.txt) do set jj=%%i
for /f "tokens=1,2,3 delims= " %%i in ("%jj%") do set Y=%%k
del /Q X:\tmp.txt 2>nul >nul
if "%Y%"=="C:\Windows\system32\igfxpers.exe" reg delete HKLM\SOFTWARE\dfsfsf /v Persistence /f
REM 由于%Y%可能为空值, 因此上一行的 "双引号" 不可省, 以免因语法错误而中断.


注: 本人制作了Firefox/Chrome/Opera/IETester_IE11/PotPlayer/PartAssist/...
     多种工具的免安装版 , 而制作PE也可能会用到, 此类批处理有写过.
回复

使用道具 举报

21#
发表于 2021-1-21 03:01:30 | 只看该作者
本帖最后由 610644034 于 2021-1-21 03:09 编辑

其实实现起来还是很简单的  用 bat脚本 实现

@echo off
setlocal enabledelayedexpansion
rem 脚本参数1:注册表路径 脚本参数2:需要查找删除的数据
rem *****这里因为简便处理获取 注册表数值名称 如果注册表数值名称包含空格 将会删除错误的数值名称******
call :查找删除指定注册表下的子项的值 "%~1" "%~2"
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:查找删除指定注册表下的子项的值
rem :查找删除指定注册表下的子项的值 "in"       "in"
rem :参数列表                       注册表路径 需要查找删除的数据
set "查找删除指定注册表下的子项的值_注册表路径=%~1"
set "查找删除指定注册表下的子项的值_查找数据=%~2"
call :扫描注册表数值项并回调 "%~1" ":查找删除指定注册表下的子项的值_001" "查找删除指定注册表下的子项的值_临时数据"
goto :eof

:查找删除指定注册表下的子项的值_001
rem 这里只简单的获取注册表数值名称
echo x!%~1! | findstr /i "!查找删除指定注册表下的子项的值_查找数据!" >nul 2>nul && (
    for %%a in ( !%~1! ) do if "" NEQ "%%a" (
        set "查找删除指定注册表下的子项的值_需要删除的数值名称=%%a"
        echo 正在删除注册表路径:!查找删除指定注册表下的子项的值_注册表路径!
        echo 数值名称:%%a
        Reg Delete "!查找删除指定注册表下的子项的值_注册表路径!" /v "%%a" /f
        echo.
        goto :eof
    )
)
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:扫描注册表数值项并回调
rem :扫描注册表数值项并回调 "in"       "in"        "in_ptr"  
rem :参数列表               注册表路径 [回调标签]  [数据名称]  
( Reg Query "%~1" )>nul 2>nul || (
    goto :eof
)

if "" EQU "%~2" for /f "delims=*" %%a in ( 'Reg Query "%~1" ' ) do if "" NEQ "%%a" call :扫描注册表数值项并回调_001 "%~1" "%%~a"

if "" NEQ "%~2" if "" NEQ "%~3" for /f "delims=*" %%a in ( 'Reg Query "%~1" ' ) do if "" NEQ "%%a" (
    set "%~3=%%a"
    call :扫描注册表数值项并回调_002 "%~1" "%~2" "%~3"
)

if "" NEQ "%~2" if "" EQU "%~3" for /f "delims=*" %%a in ( 'Reg Query "%~1" ' ) do if "" NEQ "%%a" call :扫描注册表数值项并回调_003 "%~1" "%~2" "%%~a"
goto :eof

:扫描注册表数值项并回调_001
echo x%~2 | findstr /i /V "%~1" >nul 2>nul && echo %~2
goto :eof
:扫描注册表数值项并回调_002
echo x!%~3! | findstr /i /V "%~1" >nul 2>nul && call %~2 "%~3"
goto :eof
:扫描注册表数值项并回调_003
echo x%~3 | findstr /i /V "%~1" >nul 2>nul && call %~2 "%~3"
goto :eof
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
回复

使用道具 举报

22#
发表于 2021-5-18 21:02:33 | 只看该作者
求大神指导如何做关闭USB和网卡电源节能模式的批处理或者脚本
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 19:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表