Office中国论坛/Access中国论坛

标题: 【转载 / 文章】Windows快捷方式文件格式解析 [打印本页]

作者: LucasLynn    时间: 2005-9-28 21:28
标题: 【转载 / 文章】Windows快捷方式文件格式解析














Windows快捷方式文件格式解析



作者:Cuick

下载源代码  最近一直作linux项目,很久没来VC知识库了,先向大家问个好!现在拜个晚年不是很晚吧?(不是说有心拜年八月十五也不晚吗!!嘿嘿)

  好了,言归正传。大家知道通过IShellLink接口可以得到快捷方式的各种属性。具体怎么做,网上有很多文章,这里就不介绍了。现在主要是分析一下快捷方式文件的格式,并且自己写一个解析程序。

为了方便大家理解,解说完每个段后附上一个快捷方式对应部分的事例数据并附内容解说。这里以Windows Media Player在桌面上的快捷方式为例。



一、文件的整体结构





二、文件头



文件头结构,参照下面表格:

<TABLE>



<TR>

<TD align=middle width= 15%>Offset

Size/Type

Description



0h

1 dword

值常为0000004CH,为字符"L"



4h

16 bytes

GUID



①14h

1 dword

Flags,用来标识快捷方式文件中有哪些可选属性,后面有表单独解释每一位的意义。



②18h

1 dword

目标文件属性,后面解释。



1ch

1 qword

文件创建时间



24h

1 qword

文件修改时间



2ch

1 qword

文件最后一次访问时间



34h

1 dword

目标文件长度



38h

1 dword

自定义图标个数,



3ch

1 dword

目标文件执行时窗口显示方式:

1、 正常显示

2、 最小化

3、 最大化



40h

1 dword

热键



44h

2 dword

暂时还不清楚用途值常为0

  

① 偏移14h开始的标志标示有哪些可选属性,见下表:

<TABLE>





Bit

所在位为1时表示



0

有shell item id list



1

指向文件或文件夹,如果此位为0表示指向其他。

<TR>

2

<TD width=517><FONT si
作者: LucasLynn    时间: 2005-9-28 21:28
四、文件位置信息段


  开始的一个long integer表示此段的总长度,当文件头中○1的第1位没有置位时表示既不是文件也不是文件夹,所以这个信息没有意义,所以总长度为0。先让我们看一下这个段的头:


 











Offset


Size/Type


Description





0h


1 dword


此段的总长度





4h


1 dword


头结构长度,固定为1ch





8h


1 dword


Flags指示文件在哪些卷有效,这里只用到低两位,第一位置位表示本地卷有效,反之无效。第二位置位表示网络卷有效,反之无效。





ch


1 dword


本地卷信息表的偏移(固定1ch)





10h


1 dword


本地路径信息的偏移





14h


1 dword


网络卷信息表的偏移





18h


1 dword


附加信息的偏移


如果文件在本地卷,那么文件名为:本地路径信息+附加信息


如果文件在网络卷,那么文件名为:网络卷信息中的共享名+附加信息





紧跟在段头后面的是本地卷信息表(段内偏移为1ch),结构如下:











Offset


Size/Type


Description





0h


1 dword


本地卷信息表的长度





4h


1 dword


卷类型:


0 Unknown


1 No root directory


2 Removable (Floppy, Zip, etc..)


3 Fixed (Hard disk)


4 Remote (Network drive)


5 CD-ROM


6 Ram drive (Shortcuts to stuff on a ram drive, now that''s smart...)





8h


1 dword


卷序列号





ch


1 dword


固定长度部分的大小,固定为10h





10h


可变长度


卷标签


然后是本地路径信息串段内偏移决定于10h的值。





再往后就是网络卷信息表段内偏移决定于14h的值。结构如下:











Offset


Size/Type


Description





0h


1 dword


网络卷信息表的长度





4h


1 dword


固定为2h





8h


1 dword


固定长度部分的大小,固定为14h





ch


1 dword


固定为0h





10h </F




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3