- 帖子
- 56
- 积分
- 69
- 技术
- 1
- 捐助
- 0
- 注册时间
- 2016-10-21
|
本帖最后由 huyou96 于 2017-8-1 19:52 编辑
大家好!我又上来了。一脚没踩住,又把我给冒上来了。
再次来勘误了,呵呵,也是我水平太凹,所以眼大漏神,连查询结果仔细看看都没咋看,就瞎说,有的地方说错了,而且是严重的大错特错咧,现冒上来予以更正了。
我在第4楼说的那五条删除所有键名含"Baidu"的语句是完全正确的,全注册表删除键名含指定字串的就那么简单,没说的。
但是我在第3楼和第4楼所谓的有关键值名和键值数据中含"Baidu"的查询结果中仅有键值的名称、类型、数据三样结果却无所在键的键名的说法,则全都是不用心、不仔细、眼大漏神、没对结果做详尽分析的断言,就是说全都是胡说八道,现郑重予以全部推翻!呵呵,自己推翻自己之前的错误论断咯。
查询结果里怎能就没所在键的键名呢?有的啊!原来是这样子:搜寻结果里先跟出来的就是键名,然后一个键名下可能不止一个键值或键值的数据中含有指定检索的字符串,那就在该键名下都列出,每次列出都归于前次列出的那个键名之下啊,直到又出现下一个键名为止,然后又跟着这个键名下的符合的键值或键值数据……
请比较一下以下几个在命令行直接执行的查询的结果,就都清楚了。注意,这是在命令行直接查询并比对结果,所以变量用了一个百分号,如是在批处理里要做转义就要用两个百分号,这是毋庸多言的常识咯。
(可能有个别菜鸟新手,连注册表的键和键值也分不清。以资源管理器做比,键就相当于文件夹了,键名就相当于文件夹名了,键值就相当于文件了,键值名就相当于文件名了,键值数据就相当于文件里的内容了,键值类型就相当于文件类型了。注册表是从INI文件演化成树状数据库的,过去INI文件里的段名也相当于注册表的键了,在注册表编辑器里看到的一个个“文件夹”就是键了,其下含有的“文件”就是键值了,键在注册表最初时是被称为“蜂巢”即英文Hive的,所以每个根部蜂巢键都以HKey打头来命名,HKey即HiveKey的缩略形式。)
for /f "delims=" %k in ('reg query HKCR /s /f Baidu') do echo "%k"
rem 上面这条语句是对HKCR分支下所有键名、键值名、键值数据中含Baidu字符串者进行查询
for /f "delims=" %k in ('reg query HKCR /s /f Baidu /k') do echo "%k"
rem 上面这条语句是对HKCR分支下所有键名中含Baidu字符串者进行查询
for /f "delims=" %k in ('reg query HKCR /s /f Baidu /v') do echo "%k"
rem 上面这条语句是对HKCR分支下所有键值名中含Baidu字符串者进行查询
for /f "delims=" %k in ('reg query HKCR /s /f Baidu /d') do echo "%k"
rem 上面这条语句是对HKCR分支下所有键值数据中含Baidu字符串者进行查询
所以,现在都清楚了思路该怎么做:只有删除键名中含Baidu者最简单,直接提取到后删掉就行了。
而要删掉键值名、键值数据中含Baidu者,还是需要在带/v开关或/d开关的for循环中将查询结果中的字符串截取头四个字符后无分大小写地跟HKey做比对,符合者存入keyname变量,然后接下来每次做头四比对,不符者都存入valueN变量或dataN,要对变量的数量进行计数,作为之后删除时大循环内小循环的循环次数用,直到遇到下一个符合头四为Hkey者,先要去执行一个小循环,因为reg delete每次只能删除一个键值,所以如某键下含有多个符合的键值或键值数据就需要在小循环里多次进行删除,删完后,再重复执行大循环的比对头四,并赋值给变量的新一番循环。
以上用中文文字伪代码描述的,要实现起来不是那么容易,我想想都觉得很难,就说结果中取到符合的键值名吧,要把查询结果中的字符串挤掉前后空格的头一个子字符串截取出来作为键值名赋给变量,想实现这个,想想都够头疼的了。
查询结果忽略前面的键名,一般都是像如下这样的含键值名、键值类型、键值数据及空格的长字符串:
" C:\users\huyou\appdata\roaming\baidu\baidunetdisk\baidunetdisk.exe.FriendlyAppName REG_SZ BaiduNetdisk"
" C:\Users\Huyou\AppData\Roaming\baidu\BaiduNetdisk\YunDetectService.exe.FriendlyAppName REG_SZ YunDetectService.exe"
" URL Protocol REG_EXPAND_SZ C:\Users\Huyou\AppData\Roaming\baidu\BaiduNetdisk\YunDetectService.exe"
" Target REG_SZ C:\Users\Huyou\AppData\Roaming\baidu\BaiduNetdisk\"
" (Default) REG_SZ C:\Users\Huyou\AppData\Roaming\baidu\BaiduNetdisk\YunShellExt64.dll"
" URL Protocol REG_EXPAND_SZ C:\Users\Huyou\AppData\Roaming\baidu\BaiduNetdisk\YunDetectService.exe"
" (Default) REG_EXPAND_SZ C:\Users\Huyou\AppData\Roaming\baidu\BaiduNetdisk\YunDetectService.exe,0"
" (Default) REG_EXPAND_SZ "C:\Users\Huyou\AppData\Roaming\baidu\BaiduNetdisk\YunDetectService.exe" "%1""
" C:\users\Huyou\appdata\roaming\baidu\baidunetdisk\baidunetdisk.exe.FriendlyAppName REG_SZ BaiduNetdisk"
" url2 REG_SZ https://pan.baidu.com/s/1pLrOh7d"
要我来做,水平凹,说不准做大半天也没能调好理顺,暂时放在这儿吧。如果能有大虾肯出手做出来,将非常感激不尽。就先说到此为止吧。恭祝各位晚安! |
|