Board logo

标题: [注册表类] 批处理如何删除注册表一个动态的项?(已解决) [打印本页]

作者: fanle1314    时间: 2011-1-13 06:30     标题: 批处理如何删除注册表一个动态的项?(已解决)

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{77B588D8-2A5B-44FC-9944-32880EEE3DAA}]
@="HintBrowseA"


这是现在的完整路径。但电脑一重启{77B588D8-2A5B-44FC-9944-32880EEE3DAA}这个项就会变了


@="HintBrowseA"这个不会变,要怎么样利用这个值来删除项

[ 本帖最后由 fanle1314 于 2011-1-15 01:29 编辑 ]
作者: tmplinshi    时间: 2011-1-13 08:38

要查询的数据量挺大的。
我这里导出 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\ 有 2490 项,如果导出所有子项和值,文本大小是 1.4 MB。

有两种查询方法,一是从 2490 项中,逐个用 reg.exe 再查询;二是导出所有子项和值,再查询。

建议搜索一下注册表,看有没有其他位置有 {77B588D8-2A5B-44FC-9944-32880EEE3DAA}。
作者: hanyeguxing    时间: 2011-1-13 08:44     标题: 回复 2楼 的帖子

估计是在 Software\Microsoft\Windows\CurrentVersion\Ext\Stats 下。。。
作者: tmplinshi    时间: 2011-1-13 15:48

  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. set FullKey=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
  4. set TempFile="%temp%\CLSID.reg"
  5. echo 正在导出 CLSID 下所有子项和值...
  6. reg query %FullKey% /s >%TempFile%
  7. echo 正在搜索...
  8. for /f "delims=:" %%a in ('findstr /nie HintBrowseA %TempFile%') do (
  9.     set /a #Line# = %%a - 1
  10.     set Command="findstr /n .* %TempFile% | findstr /b !#Line#!:"
  11.     for /f "tokens=1,* delims=:" %%b in (' !Command! ') do (
  12.         reg delete %%c /f >nul
  13.         echo 删除成功!
  14.     )
  15. ) 2>nul
  16. if not defined #Line# echo 没有找到
  17. del %TempFile%
  18. echo 按任意键退出...
  19. pause >nul
复制代码

作者: fanle1314    时间: 2011-1-14 01:52

原帖由 tmplinshi 于 2011-1-13 15:48 发表
@echo off
SetLocal EnableDelayedExpansion
set FullKey=HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
set TempFile="%temp%\CLSID.reg"

echo 正在导出 CLSID 下所有子项和值...
reg query %FullKey% /s >%Te ...



谢谢,问题已经解决




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2