一种从快捷方式中快速解析出可执行文件路径的方法

文档序号:6438702阅读:1266来源:国知局
专利名称:一种从快捷方式中快速解析出可执行文件路径的方法
技术领域
本发明属于计算机文件系统领域,涉及到一种可以快速方便地从快捷方式中解析出可执行文件路径的方法。
背景技术
目前市场流行的从快捷方式中解析可执行文件的方法基本上都是利用COM的方式,需要安装COM组件,使用COM组件进行开发的好处是显而易见的,封装性好,能够方便地动态插入或卸载,兼容性好,可以进行跨语言开发。但是由于COM组件需要对各种功能的调用进行了层层封装,使得整个架构比较庞大而复杂,所以会增大程序体积和运行效率。本发明则是直接从快捷方式的文件格式入手,直接通过对其文件格式的解析分析出它所指向的可执行文件的路径和参数等我们所需要的数据,不需要装载不必要的框架和许多不会用到的功能,体积上会小很多且效率上有了极大的提高,当只需要解析少量的快捷方式时大家可能体会不到,但在一些杀软或其它的行业软件需要进行海量的快捷方式解析时,效率的差别就很明显了。

发明内容
针对现有技术中存在的问题,本发明的目的在于提供一种从快捷方式中快速解析出可执行文件路径的方法,本发明的主要技术内容如下1)打开要解析的快捷方式文件,并建立快捷方式文件到内存的映射(建立内存映射后可以把文件当内存使用,读取和存储等操作都非常方便)。2)读取文件头结构中的可选属性标志字段(Flags字段),并保存下来。Flags字段用来标识快捷方式文件中有哪些可选属性,这些属性对后面的文件解析和处理非常重要。3)根据Flags字段的第0位来判断是否有Shell item ID list段,此段的第一个unsigned short integer表示item ID list段的总长度,此段对我们解析可执行文件路径没什么影响,所以可以读取到此段的总长度信息后,直接跳过不再对此字段做处理。4)根据Flags字段的总长度信息确定文件位置信息段的位置,然后读取文件位置信息段的内容并通过此段中的标志位判断本快捷方式指向的可执行文件是在本地卷还是在网络卷,在本地卷的话就通过附加信息的偏移减去本地路径信息的偏移来算出路径信息的长度,根据本地路径信息的偏移和算出来的路径信息长度读取可执行文件路径信息字符串(附加信息的偏移和本地路径信息的偏移都在“文件位置信息段”中有专用的子字段存储,是公知信息);在网络卷的话通过网络卷信息表的偏移(网络卷信息表的偏移在“文件位置信息段”中有专用的子字段存储,是公知信息)找到网络卷信息表的位置,网络卷信息表的前4个字节的值是网络卷信息表的长度,用网络卷信息表的长度减去20字节即为网络共享名的长度,网络卷信息表的位置加上20字节即为网络共享名的起始位置,根据网络共享名的起始位置和网络共享名的长度读取可执行文件路径信息字符串。
5)根据文件头中的Flags字段的值,可以得到描述字符段,相对路径段,工作目录段,命令行段和图标文件段的信息。本发明的有益效果是以往从快捷方式中解析文件格式必须安装COM组件,会增加程序的体积、开发的复杂度和时间复杂度。采用本发明的方法后,不需要安装任何组件和模块,通过直接对快捷方式的文件格式进行解析即可快速定位可执行文件的路径,能极大地提高程序的运行效率,且封装成函数之后体积很小,简单易用。经测试,在一万级别的快捷方式的解析上,使用COM组件的方式需要1分20秒左右而本发明只需要2秒就可以全部解析完成,所以使用本发明对快捷方式进行解析可以级大地提高工作效率和客户体验,而且本发明灵活方便,可以做为一个独立的装置来使用,也可以封装成函数供其它程序调用。


图1为本发明的结构示意图;图2为本发明的流程图。
具体实施例方式结合附图,进一步阐述本发明的实施方案1)根据设定的路径信息读取快捷方式文件,并解析出快捷方式文件的全路径文件名,判断此快捷方式文件是否存在,如果存在此快捷方式文件,则建立文件到内存的映射, 建立文件内存映射后就可以以读写内存的方式来读写此快捷方式文件,方便操作。如果不存在,则进入到异常处理的流程,打印日志告知用户此快捷方式文件不存在。2)根据快捷方式的文件格式,前68字节为文件头结构,文件头结构中包含有快捷方式标志,快捷方式文件中可选属性标志,目标文件属性,文件创建时间,文件修改时间,文件最后一次访问时间,目标文件长度等信息,本发明主要关心快捷方式文件中可选属性标志,读取并存储下来。3)根据快捷方式文件中可选属性标志的第0位来判断是否有Siell item ID list 段,如果有,则读取此段的总长度,然后跳过此段不做处理。4)读取文件位置信息段的内容并通过此段中的标志位判断文件是在本地卷还是在网络卷并计算路径信息的长度,如果此文件在本地卷,从本地路径信息的偏移处读取该长度(前面计算出的路径信息的长度)的字符串从本地路径信息的偏移处读取该长度的字符串(本地路径信息的偏移是“文件位置信息段”中有专用的子字段存储,此为公知的),此字符串就是可执行文件路径信息字符串;如果此文件在网络卷,则通过网络卷信息表找到网络共享名的起始位置,从网络共享名的起始位置处读取该长度(前面计算出的路径信息的长度)的字符串。5)根据快捷方式文件中可选属性标志的第5位来判断是否存在命令行参数,如果存在命令行参数,就获取命令行参数并加在文件路径信息字符串的后面(有些文件带有命令行参数,如果执行的时候不加上命令行参数是无法执行的)。
权利要求
1.一种从快捷方式中快速解析出可执行文件路径的方法,其步骤为1)根据设定的路径信息读取快捷方式文件,并解析出快捷方式文件的全路径文件名;2)根据快捷方式的全路径文件名判断该快捷方式文件是否存在,如果存在,则建立该快捷方式文件到内存的映射;3)读取该快捷方式文件中可选属性标志信息,并根据可选属性标志信息中的总长度信息确定快捷方式文件的文件位置信息段位置;4)读取文件位置信息段的内容,提取该快捷方式指向的可执行文件的文件路径。
2.如权利要求1所述的方法,其特征在于根据该快捷方式文件中可选属性标志信息判断是否存在可执行文件的命令行参数,如果存在命令行参数,则获取命令行参数并将其加在可执行文件路径信息字符串的后面。
3.如权利要求1或2所述的方法,其特征在于提取所述可执行文件路径的方法为首先判断该快捷方式指向的可执行文件是在本地卷还是在网络卷;如果在本地卷,则将所述文件位置信息段中附加信息的偏移减去本地路径信息的偏移,计算出路径信息的长度,然后从本地路径信息的偏移处读取该长度的字符串,得到可执行文件的文件路径;如果是在网络卷,则根据所述文件位置信息段中网络卷信息表的偏移找到网络卷信息表的位置,得到网络卷信息表的长度,然后根据网络卷信息表的长度确定网络共享名的长度和起始位置,读取可执行文件路径信息字符串,得到可执行文件的文件路径。
4.如权利要求3所述的方法,其特征在于根据文件位置信息段的标志位判断该快捷方式指向的可执行文件是在本地卷还是在网络卷。
5.如权利要求3所述的方法,其特征在于从所述可选属性标志信息中提取描述字符段、相对路径段、工作目录段、命令行段和图标文件段的信息并输出。
6.如权利要求1所述的方法,其特征在于所述设定的路径信息为输入的快捷方式文件夹目录信息或快捷方式文件的路径信息。
全文摘要
本发明公开了一种从快捷方式中快速解析出可执行文件路径的方法,属于计算机文件系统领域。本方法为1)根据设定的路径信息读取快捷方式文件,并解析出快捷方式文件的全路径文件名;2)根据快捷方式的全路径文件名判断该快捷方式文件是否存在,如果存在,则建立该快捷方式文件到内存的映射;3)读取该快捷方式文件中可选属性标志信息,并根据可选属性标志信息中的总长度信息确定快捷方式文件的文件位置信息段位置;4)读取文件位置信息段的内容,提取该快捷方式指向的可执行文件的文件路径。本发明能极大地提高程序的运行效率,且封装成函数之后体积很小,简单易用。
文档编号G06F17/30GK102521255SQ20111036654
公开日2012年6月27日 申请日期2011年11月17日 优先权日2011年11月17日
发明者赵磊 申请人:北京锐安科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1