欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種從快捷方式中快速解析出可執(zhí)行文件路徑的方法

文檔序號:6438702閱讀:1303來源:國知局
專利名稱:一種從快捷方式中快速解析出可執(zhí)行文件路徑的方法
技術領域
本發(fā)明屬于計算機文件系統(tǒng)領域,涉及到一種可以快速方便地從快捷方式中解析出可執(zhí)行文件路徑的方法。
背景技術
目前市場流行的從快捷方式中解析可執(zhí)行文件的方法基本上都是利用COM的方式,需要安裝COM組件,使用COM組件進行開發(fā)的好處是顯而易見的,封裝性好,能夠方便地動態(tài)插入或卸載,兼容性好,可以進行跨語言開發(fā)。但是由于COM組件需要對各種功能的調用進行了層層封裝,使得整個架構比較龐大而復雜,所以會增大程序體積和運行效率。本發(fā)明則是直接從快捷方式的文件格式入手,直接通過對其文件格式的解析分析出它所指向的可執(zhí)行文件的路徑和參數(shù)等我們所需要的數(shù)據(jù),不需要裝載不必要的框架和許多不會用到的功能,體積上會小很多且效率上有了極大的提高,當只需要解析少量的快捷方式時大家可能體會不到,但在一些殺軟或其它的行業(yè)軟件需要進行海量的快捷方式解析時,效率的差別就很明顯了。

發(fā)明內容
針對現(xiàn)有技術中存在的問題,本發(fā)明的目的在于提供一種從快捷方式中快速解析出可執(zhí)行文件路徑的方法,本發(fā)明的主要技術內容如下1)打開要解析的快捷方式文件,并建立快捷方式文件到內存的映射(建立內存映射后可以把文件當內存使用,讀取和存儲等操作都非常方便)。2)讀取文件頭結構中的可選屬性標志字段(Flags字段),并保存下來。Flags字段用來標識快捷方式文件中有哪些可選屬性,這些屬性對后面的文件解析和處理非常重要。3)根據(jù)Flags字段的第0位來判斷是否有Shell item ID list段,此段的第一個unsigned short integer表示item ID list段的總長度,此段對我們解析可執(zhí)行文件路徑?jīng)]什么影響,所以可以讀取到此段的總長度信息后,直接跳過不再對此字段做處理。4)根據(jù)Flags字段的總長度信息確定文件位置信息段的位置,然后讀取文件位置信息段的內容并通過此段中的標志位判斷本快捷方式指向的可執(zhí)行文件是在本地卷還是在網(wǎng)絡卷,在本地卷的話就通過附加信息的偏移減去本地路徑信息的偏移來算出路徑信息的長度,根據(jù)本地路徑信息的偏移和算出來的路徑信息長度讀取可執(zhí)行文件路徑信息字符串(附加信息的偏移和本地路徑信息的偏移都在“文件位置信息段”中有專用的子字段存儲,是公知信息);在網(wǎng)絡卷的話通過網(wǎng)絡卷信息表的偏移(網(wǎng)絡卷信息表的偏移在“文件位置信息段”中有專用的子字段存儲,是公知信息)找到網(wǎng)絡卷信息表的位置,網(wǎng)絡卷信息表的前4個字節(jié)的值是網(wǎng)絡卷信息表的長度,用網(wǎng)絡卷信息表的長度減去20字節(jié)即為網(wǎng)絡共享名的長度,網(wǎng)絡卷信息表的位置加上20字節(jié)即為網(wǎng)絡共享名的起始位置,根據(jù)網(wǎng)絡共享名的起始位置和網(wǎng)絡共享名的長度讀取可執(zhí)行文件路徑信息字符串。
5)根據(jù)文件頭中的Flags字段的值,可以得到描述字符段,相對路徑段,工作目錄段,命令行段和圖標文件段的信息。本發(fā)明的有益效果是以往從快捷方式中解析文件格式必須安裝COM組件,會增加程序的體積、開發(fā)的復雜度和時間復雜度。采用本發(fā)明的方法后,不需要安裝任何組件和模塊,通過直接對快捷方式的文件格式進行解析即可快速定位可執(zhí)行文件的路徑,能極大地提高程序的運行效率,且封裝成函數(shù)之后體積很小,簡單易用。經(jīng)測試,在一萬級別的快捷方式的解析上,使用COM組件的方式需要1分20秒左右而本發(fā)明只需要2秒就可以全部解析完成,所以使用本發(fā)明對快捷方式進行解析可以級大地提高工作效率和客戶體驗,而且本發(fā)明靈活方便,可以做為一個獨立的裝置來使用,也可以封裝成函數(shù)供其它程序調用。


圖1為本發(fā)明的結構示意圖;圖2為本發(fā)明的流程圖。
具體實施例方式結合附圖,進一步闡述本發(fā)明的實施方案1)根據(jù)設定的路徑信息讀取快捷方式文件,并解析出快捷方式文件的全路徑文件名,判斷此快捷方式文件是否存在,如果存在此快捷方式文件,則建立文件到內存的映射, 建立文件內存映射后就可以以讀寫內存的方式來讀寫此快捷方式文件,方便操作。如果不存在,則進入到異常處理的流程,打印日志告知用戶此快捷方式文件不存在。2)根據(jù)快捷方式的文件格式,前68字節(jié)為文件頭結構,文件頭結構中包含有快捷方式標志,快捷方式文件中可選屬性標志,目標文件屬性,文件創(chuàng)建時間,文件修改時間,文件最后一次訪問時間,目標文件長度等信息,本發(fā)明主要關心快捷方式文件中可選屬性標志,讀取并存儲下來。3)根據(jù)快捷方式文件中可選屬性標志的第0位來判斷是否有Siell item ID list 段,如果有,則讀取此段的總長度,然后跳過此段不做處理。4)讀取文件位置信息段的內容并通過此段中的標志位判斷文件是在本地卷還是在網(wǎng)絡卷并計算路徑信息的長度,如果此文件在本地卷,從本地路徑信息的偏移處讀取該長度(前面計算出的路徑信息的長度)的字符串從本地路徑信息的偏移處讀取該長度的字符串(本地路徑信息的偏移是“文件位置信息段”中有專用的子字段存儲,此為公知的),此字符串就是可執(zhí)行文件路徑信息字符串;如果此文件在網(wǎng)絡卷,則通過網(wǎng)絡卷信息表找到網(wǎng)絡共享名的起始位置,從網(wǎng)絡共享名的起始位置處讀取該長度(前面計算出的路徑信息的長度)的字符串。5)根據(jù)快捷方式文件中可選屬性標志的第5位來判斷是否存在命令行參數(shù),如果存在命令行參數(shù),就獲取命令行參數(shù)并加在文件路徑信息字符串的后面(有些文件帶有命令行參數(shù),如果執(zhí)行的時候不加上命令行參數(shù)是無法執(zhí)行的)。
權利要求
1.一種從快捷方式中快速解析出可執(zhí)行文件路徑的方法,其步驟為1)根據(jù)設定的路徑信息讀取快捷方式文件,并解析出快捷方式文件的全路徑文件名;2)根據(jù)快捷方式的全路徑文件名判斷該快捷方式文件是否存在,如果存在,則建立該快捷方式文件到內存的映射;3)讀取該快捷方式文件中可選屬性標志信息,并根據(jù)可選屬性標志信息中的總長度信息確定快捷方式文件的文件位置信息段位置;4)讀取文件位置信息段的內容,提取該快捷方式指向的可執(zhí)行文件的文件路徑。
2.如權利要求1所述的方法,其特征在于根據(jù)該快捷方式文件中可選屬性標志信息判斷是否存在可執(zhí)行文件的命令行參數(shù),如果存在命令行參數(shù),則獲取命令行參數(shù)并將其加在可執(zhí)行文件路徑信息字符串的后面。
3.如權利要求1或2所述的方法,其特征在于提取所述可執(zhí)行文件路徑的方法為首先判斷該快捷方式指向的可執(zhí)行文件是在本地卷還是在網(wǎng)絡卷;如果在本地卷,則將所述文件位置信息段中附加信息的偏移減去本地路徑信息的偏移,計算出路徑信息的長度,然后從本地路徑信息的偏移處讀取該長度的字符串,得到可執(zhí)行文件的文件路徑;如果是在網(wǎng)絡卷,則根據(jù)所述文件位置信息段中網(wǎng)絡卷信息表的偏移找到網(wǎng)絡卷信息表的位置,得到網(wǎng)絡卷信息表的長度,然后根據(jù)網(wǎng)絡卷信息表的長度確定網(wǎng)絡共享名的長度和起始位置,讀取可執(zhí)行文件路徑信息字符串,得到可執(zhí)行文件的文件路徑。
4.如權利要求3所述的方法,其特征在于根據(jù)文件位置信息段的標志位判斷該快捷方式指向的可執(zhí)行文件是在本地卷還是在網(wǎng)絡卷。
5.如權利要求3所述的方法,其特征在于從所述可選屬性標志信息中提取描述字符段、相對路徑段、工作目錄段、命令行段和圖標文件段的信息并輸出。
6.如權利要求1所述的方法,其特征在于所述設定的路徑信息為輸入的快捷方式文件夾目錄信息或快捷方式文件的路徑信息。
全文摘要
本發(fā)明公開了一種從快捷方式中快速解析出可執(zhí)行文件路徑的方法,屬于計算機文件系統(tǒng)領域。本方法為1)根據(jù)設定的路徑信息讀取快捷方式文件,并解析出快捷方式文件的全路徑文件名;2)根據(jù)快捷方式的全路徑文件名判斷該快捷方式文件是否存在,如果存在,則建立該快捷方式文件到內存的映射;3)讀取該快捷方式文件中可選屬性標志信息,并根據(jù)可選屬性標志信息中的總長度信息確定快捷方式文件的文件位置信息段位置;4)讀取文件位置信息段的內容,提取該快捷方式指向的可執(zhí)行文件的文件路徑。本發(fā)明能極大地提高程序的運行效率,且封裝成函數(shù)之后體積很小,簡單易用。
文檔編號G06F17/30GK102521255SQ20111036654
公開日2012年6月27日 申請日期2011年11月17日 優(yōu)先權日2011年11月17日
發(fā)明者趙磊 申請人:北京銳安科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
景谷| 铜鼓县| 乌拉特后旗| 呼和浩特市| 汝南县| 于都县| 三河市| 闽清县| 平定县| 云霄县| 饶阳县| 宾阳县| 马龙县| 松滋市| 武冈市| 巴中市| 黔西| 太原市| 萨嘎县| 芮城县| 西乌珠穆沁旗| 南丹县| 平谷区| 徐州市| 临邑县| 应城市| 潼南县| 大埔县| 涪陵区| 龙山县| 南皮县| 临颍县| 清新县| 仙桃市| 偃师市| 九龙县| 乐都县| 东丽区| 噶尔县| 焦作市| 上高县|