大家好,春去夏将近,花开香诱人, 预知学中路,找我胖廖晨。
前文我把需要的知识点介绍的差不多了,在讲述后面的内容之前,我们需要回顾一下上文的知识点:
1.快捷方式的文件类与图标有关的,共有四种,扩展名为.lnk,pif,.url,wsh,在注册表的位置:HCYK_CLASSES_ROOT下,对应的项为:lnkFile,pifFile,internetshortcut,WSHFile;
2.需要用的DOS命令:删除注册表名称IsShortcut 的reg delete 注册路径 /v IsShortcut(名称) /f(悄悄模式,不提示)
对于完成功能上来说,我们还有一个DOS命令没有说:taskkill:终止进程命令,语法有点复杂,这里我们只需知道结束进程命令:
TSAKKILL+ /F (强制结束进行) /IM(进程名标识符) + 进程名称详细用法可参考下图:
TASKKILL命令参数用法示意图
哪结束进程Explorer.exe命令就不难写出来:TASKKILL /F /IM EXPLORER.EXE
那可能有人要问了,这么多命令你都记得住吗?
当然记不住,我脑容量本来就很小,存不了哪么多东西,只能存一些获取这些知识的方法,比如获取某条命令的用法:命令 + /?或help 命令名
如查copy命令的用法:
win+R,输入cmd,窗口就输入:copy /? 或 help copy 后回车即可。
命令用法查询步骤示意图
在说批处理命令的时候,需要插播一个扩展知识点,有网友私信问我,WSH是什么文件?用来干什么的?
这里简单介绍一下:WSH文件,全称:WINDOWS Scripting Host (脚本服务环境工具),它使用对象和工具可用于脚本,并提供一系列脚本开发指南,可实现用户絊登陆,脚本管理和计算机任务自动化的。
说白了,就是一般人不会用到的文件格式,所有网上流传的去小箭头的方法里大部分没有处理它,我们呢,就做完善点,也就一条命令的事。
下面我们就开始编写BAT文件,虽然说的批处理文件是DOS命令集,但它也有自己独有一些语法关键词,比如常用的ECHO:
语法:Echo 空格 + 单词或一句话 含义:输出echo后面的单词和一句话它有个专业的名称叫:命令回显,即在执行的时候,原始命令和执行的结果先后都显示出来;
当有很多命令时,有时候我们不需要命令回显,就可以通过前面@ echo off 来关闭。具体怎么样,还是来两个例子对比一下吧!为了能捕捉执行结果的状态,我们还需要一个批处理命令:
PAUSE :命令执行到PAUSE的位置,会自动暂停,这时需要人为输入任意键,会继续执行,若后面没有任何命令,就会自动关闭执行结果窗口
命令回显使用和屏蔽步骤示意图
:在存储批处理文件时,需要注意文件编码,默认编码为UTF-8,若有中文则需要存储成ASNI编码,否则会出现执行结果是乱码的情况。
用到的批处理语法就这些了,现在终于可以编写我们的程序了,程序也是相当简单:
@ echo offreg delete HKEY_CLASSES_ROOT\lnkFile /v IsShortcut /freg delete HKEY_CLASSES_ROOT\pifFile /v IsShortcut /freg delete HKEY_CLASSES_ROOT\internetshortcut /v IsShortcut /freg delete HKEY_CLASSES_ROOT\WSHFile /v IsShortcut /fTaskkill /f /im explorer.exe && explorer.exe聪明的你是不是发现了,最后一句代码为什么不写成两句呢??
Taskkill explorer.exeExplorer.exe难道是为了炫技吗?明明两句,非要一句写完!
确实不是炫技,是真有必要这么写,原因就在这个有特殊用途的符号:&&
学名逻辑与运算符,在逻辑表达式中,表示前后条件都成立,则返回结果为真,其它都为假;
不过它在编程里还有阻断作用,也叫阻断运算符;
如果将2个编程命令或语句用&&链接,只有第一条语句执行成功,才会执行第2语句,否则第2条语句会忽略。最后命令的目的是重启explorer,如explorer进程没有结束掉,就执行了explorer.exe,系统就会出现两个explorer.exe,虽然危害不大,但我们应避免这种情况的发生,而&&就成了不二之选。
为了方便查看运行结果,需要在代码的最后使用PAUSE命令,让执行结果界面暂停。
程序编写的差不多了,下面就开始我们的最终测试了。

01最终测试

在程序设计中,测试占有很重要的位置,测试的方法分为:灰盒测试,白盒测试和黑色测试,虽然本文用不到,这里简单名词解释:
白盒测试:也叫结构测试,测试者了解程序结构和处理算法,主要按程序内部逻辑编写测例;在测试者眼里,程序就像是个透明的盒子因此得名。黑盒测试:相对白盒测试而说,测试者是关键的需求来设计测例,它更注重结果,而不是程序内部结构和算法,更像一小白使用某个软件,它也有专门的来测试,比如:等价类划分,边值分析,错误推测,因果图等。灰盒测试:它是像现实折中的产物,因为每次都白盒测试,很费时间和资源,而只测黑盒也不能检测出结果正确而程序内部是有问题的情况。严格来说,我们做的都不是个程序,只是一个小工具,这里的测试就分不清是白盒还是黑盒了,因为代码只有寥寥几行,没有复杂逻辑和数据结构,但测试不能忽略,这也是工具好用不好用的关键,你测试的全面,工具通用性就强。
那么问题来了,我们该测试什么呢?
虽然功能不大,但要完美的话,测试的东西还是很多的:
不同的系统版本需要测试,因为系统版本不同,注册表的有可能出现变化需要加装常规的安全软件环境下,检测拦截情况;虽然简单两句总结,但要测试起来,恐怕得花些时间,还有就是遇到问题,需要改进,解决BUG,环境重置,再测试了。
我这里简化测试环境,
系统环境:虚拟机windows 10 专业版,安全软件:无 例文件:4个不同类型一切就绪,双击运行bat文件,这车翻得脸疼啊,弹出了巨大错误提示窗口,错误:拒绝访问
错误提示示意图
拒绝访问,通常是因为权限问题,比如用户的权限不足,或者被指定特殊用户使用等。不过这也正常,通常系统中,影响系统预置和运行的关键键值,都会限制非管理员的操作,那问题就简单了,权限不够,就提升权限,具体方法如下:
只需选中bat文件,右键菜单 选择【以管理员身份运行】 执行后,弹出选择窗口,选择【是】运行结果如图
提升权限操作示意图
运行通过,可结果又打脸了, URL文件的小箭头没有删掉呢?看来上文找到的项名称InternetShortcut 对URL文件类型并没有其到作用。
前文说了,系统的判断快捷方式的标准是IsShortcut,再用注册搜索关键词:果然找到了
注册表信息示意图
将语句修改为:reg delete HKEY_CLASSES_ROOT\IE.AssocFile.URL /v IsShortcut /f
保存,这时就需要重置系统环境,恢复到运行之前,就是双击备份好的reg文件,将之前备份好的注册信息重新导入注册表,重启explorer.exe进程就好了:
系统环境重置步骤示意图
再次重复上面的操作,预期的结果达到了。
程序代码以及效果图
可能有人要问了,这样就能保证100%对所有的快捷方式都有效吗?
答:说实话,不能,它只能对以处理的文件类型有效,比如特殊的快捷方式,仍不行,比website文件,它是用于IE浏览器存储固定网站信息的文件格式,通常不会出现桌面上,只会出现特定文件夹里。
好了今天文章就到这了,希望你会有所收获,喜欢的就关注+三联吧,你的支持是我原创的动力。
举报/反馈

小哥聊经验

1801获赞 1886粉丝
专注解说办公软件使用技巧和用法、网络知识
关注
0
0
收藏
分享