Windows快捷方式文件格式解析(中文)

  • A+
所属分类:[开发技巧]

来源地址: http://www.vckbase.com/document/viewdoc/?id=1411

      大家知道通过IShellLink接口可以得到快捷方式的各种属性。具体怎么做,网上有很多文章,这里就不介绍了。现在主要是分析一下快捷方式文件的格式,并且自己写一个解析程序。
为了方便大家理解,解说完每个段后附上一个快捷方式对应部分的事例数据并附内容解说。这里以Windows Media Player在桌面上的快捷方式为例。

一、文件的整体结构


二、文件头

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

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开始的标志标示有哪些可选属性,见下表:

Bit 所在位为1时表示
0 有shell item id list
1 指向文件或文件夹,如果此位为0表示指向其他。
2 存在描述字符串
3 存在相对路径
4 存在工作路径
5 存在命令行参数
6 存在自定义图标

偏移18h开始的目标文件属性:

Bit 所在位为1时表示
0 快捷方式所指目标文件有只读属性
1 快捷方式所指目标文件有隐藏属性
2 快捷方式所指目标文件是系统文件
3 快捷方式所指目标是卷标
4 快捷方式所指目标是文件夹
5 快捷方式所指目标文件上次存档后被改变过
6 快捷方式所指目标文件被加密
7 快捷方式所指目标文件属性为一般
8 快捷方式所指目标文件为临时
9 快捷方式所指目标文件为稀疏文件(sparse file)
10 快捷方式所指目标文件有重分析点数据(reparse point)
11 快捷方式所指目标文件被压缩
12 快捷方式所指目标文件脱机

例:

偏移 数据 解释0000 4c 00 00 00 字符"L"0004 01 14 02 00 快捷方式的GUID。值固定00 00 00 00C0 00 00 0000 00 00 460014 8F 00 00 00 flags。对照表可知有shell item id list目标是文件存在描述字符串存在相对路径0018 20 00 00 00 文件属性,具体内容可以查上面的属性说明表001C 40 51 0A 0C 文件创建时间AD CB C4 010024 C4 D8 A5 91 文件修改时间AD CB C4 01002C 00 33 16 74 文件最后一次访问时间F6 C7 C3 010034 00 20 01 00 文件长度0038 00 00 00 00 自定义图标个数003C 01 00 00 00 打开时窗口为normal状态0040 00 00 00 00 热键0044 00 00 00 00 暂时还不清楚用途值常为000 00 00 00

三、Shell item ID list段
当文件头中○1的第0位置位时才有。第一个unsigned short integer表示item ID list段的总长度。后面紧跟着SHITEMID结构。SHITEMID的定义如下:

typedef struct _SHITEMID {USHORT cb;BYTE abID[0];} SHITEMID, * LPSHITEMID;

cb保存SHITEMID结构的大小。abID是可变长度的对

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
广告也精彩
avatar
广告也精彩

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: