去掉快捷方式小箭头(封装批处理程序删除图标小箭头) 大家好,春去夏将近,花开香诱人,预知学中路,找我胖廖晨。 前文我把需要的知识点介绍的差不多了,在讲述后面的内容之前,我们需要回顾一下上文的知识点: 1。快捷方式的文件类与图标有关的,共有四种,扩展名为。lnk,pif,。url,wsh,在注册表的位置:HCYKCLASSESROOT下,对应的项为:lnkFile,pifFile,internetshortcut,WSHF 2。需要用的DOS命令:删除注册表名称IsShortcut的regdelete注册路径vIsShortcut(名称)f(悄悄模式,不提示) 对于完成功能上来说,我们还有一个DOS命令没有说:taskkill:终止进程命令,语法有点复杂,这里我们只需知道结束进程命令: TSAKKILLF(强制结束进行)IM(进程名标识符)进程名称详细用法可参考下图: TASKKILL命令参数用法示意图 哪结束进程Explorer。exe命令就不难写出来:TASKKILLFIMEXPLORER。EXE 那可能有人要问了,这么多命令你都记得住吗? 当然记不住,我脑容量本来就很小,存不了哪么多东西,只能存一些获取这些知识的方法,比如获取某条命令的用法:命令?或help命令名 如查copy命令的用法: winR,输入cmd,窗口就输入:copy?或helpcopy后回车即可。 命令用法查询步骤示意图 在说批处理命令的时候,需要插播一个扩展知识点,有网友私信问我,WSH是什么文件?用来干什么的? 这里简单介绍一下:WSH文件,全称:WINDOWSScriptingHost(脚本服务环境工具),它使用对象和工具可用于脚本,并提供一系列脚本开发指南,可实现用户絊登陆,脚本管理和计算机任务自动化的。 说白了,就是一般人不会用到的文件格式,所有网上流传的去小箭头的方法里大部分没有处理它,我们呢,就做完善点,也就一条命令的事。 下面我们就开始编写BAT文件,虽然说的批处理文件是DOS命令集,但它也有自己独有一些语法关键词,比如常用的ECHO: 语法:Echo空格单词或一句话含义:输出echo后面的单词和一句话它有个专业的名称叫:命令回显,即在执行的时候,原始命令和执行的结果先后都显示出来; 当有很多命令时,有时候我们不需要命令回显,就可以通过前面echooff来关闭。具体怎么样,还是来两个例子对比一下吧!为了能捕捉执行结果的状态,我们还需要一个批处理命令: PAUSE:命令执行到PAUSE的位置,会自动暂停,这时需要人为输入任意键,会继续执行,若后面没有任何命令,就会自动关闭执行结果窗口 命令回显使用和屏蔽步骤示意图 注:在存储批处理文件时,需要注意文件编码,默认编码为UTF8,若有中文则需要存储成ASNI编码,否则会出现执行结果是乱码的情况。 用到的批处理语法就这些了,现在终于可以编写我们的程序了,程序也是相当简单: echooffregdeleteHKEYCLASSESROOTlnkFilevIsShortcutfregdeleteHKEYCLASSESROOTpifFilevIsShortcutfregdeleteHKEYCLASSESROOTinternetshortcutvIsShortcutfregdeleteHKEYCLASSESROOTWSHFilevIsShortcutfTaskkillfimexplorer。explorer。exe聪明的你是不是发现了,最后一句代码为什么不写成两句呢?? Taskkillexplorer。exeExplorer。exe难道是为了炫技吗?明明两句,非要一句写完! 确实不是炫技,是真有必要这么写,原因就在这个有特殊用途的符号: 学名逻辑与运算符,在逻辑表达式中,表示前后条件都成立,则返回结果为真,其它都为假; 不过它在编程里还有阻断作用,也叫阻断运算符; 如果将2个编程命令或语句用链接,只有第一条语句执行成功,才会执行第2语句,否则第2条语句会忽略。最后命令的目的是重启explorer,如explorer进程没有结束掉,就执行了explorer。exe,系统就会出现两个explorer。exe,虽然危害不大,但我们应避免这种情况的发生,而就成了不二之选。 为了方便查看运行结果,需要在代码的最后使用PAUSE命令,让执行结果界面暂停。 程序编写的差不多了,下面就开始我们的最终测试了。 01最终测试 在程序设计中,测试占有很重要的位置,测试的方法分为:灰盒测试,白盒测试和黑色测试,虽然本文用不到,这里简单名词解释: 白盒测试:也叫结构测试,测试者了解程序结构和处理算法,主要按程序内部逻辑编写测例;在测试者眼里,程序就像是个透明的盒子因此得名。黑盒测试:相对白盒测试而说,测试者是关键的需求来设计测例,它更注重结果,而不是程序内部结构和算法,更像一小白使用某个软件,它也有专门的来测试,比如:等价类划分,边值分析,错误推测,因果图等。灰盒测试:它是像现实折中的产物,因为每次都白盒测试,很费时间和资源,而只测黑盒也不能检测出结果正确而程序内部是有问题的情况。严格来说,我们做的都不是个程序,只是一个小工具,这里的测试就分不清是白盒还是黑盒了,因为代码只有寥寥几行,没有复杂逻辑和数据结构,但测试不能忽略,这也是工具好用不好用的关键,你测试的全面,工具通用性就强。 那么问题来了,我们该测试什么呢? 虽然功能不大,但要完美的话,测试的东西还是很多的: 不同的系统版本需要测试,因为系统版本不同,注册表的有可能出现变化需要加装常规的安全软件环境下,检测拦截情况;虽然简单两句总结,但要测试起来,恐怕得花些时间,还有就是遇到问题,需要改进,解决BUG,环境重置,再测试了。 我这里简化测试环境, 系统环境:虚拟机windows10专业版,安全软件:无例文件:4个不同类型一切就绪,双击运行bat文件,这车翻得脸疼啊,弹出了巨大错误提示窗口,错误:拒绝访问 错误提示示意图 拒绝访问,通常是因为权限问题,比如用户的权限不足,或者被指定特殊用户使用等。不过这也正常,通常系统中,影响系统预置和运行的关键键值,都会限制非管理员的操作,那问题就简单了,权限不够,就提升权限,具体方法如下: 只需选中bat文件,右键菜单选择【以管理员身份运行】执行后,弹出选择窗口,选择【是】运行结果如图: 提升权限操作示意图 运行通过,可结果又打脸了,URL文件的小箭头没有删掉呢?看来上文找到的项名称InternetShortcut对URL文件类型并没有其到作用。 前文说了,系统的判断快捷方式的标准是IsShortcut,再用注册搜索关键词:果然找到了 注册表信息示意图 将语句修改为:regdeleteHKEYCLASSESROOTIE。AssocFile。URLvIsShortcutf 保存,这时就需要重置系统环境,恢复到运行之前,就是双击备份好的reg文件,将之前备份好的注册信息重新导入注册表,重启explorer。exe进程就好了: 系统环境重置步骤示意图 再次重复上面的操作,预期的结果达到了。 程序代码以及效果图 可能有人要问了,这样就能保证100对所有的快捷方式都有效吗? 答:说实话,不能,它只能对以处理的文件类型有效,比如特殊的快捷方式,仍不行,比website文件,它是用于IE浏览器存储固定网站信息的文件格式,通常不会出现桌面上,只会出现特定文件夹里。 好了今天文章就到这了,希望你会有所收获,喜欢的就关注三联吧,你的支持是我原创的动力。