Windows的12种快捷方式(2007-4-3修订版)
版权:electronixtar@gmail.com
快捷方式,很多人的反映就是那个小箭头,其实Windows支持9种快捷方式。
关于这个格式
1. *.lnk
这是微软的通用快捷方式,很多电脑初学者当年就是把一个500MB的游戏在桌面上的1k大小的快捷方式复制到软盘里,然后回家双击打开一看,发现Windows提示“找不到路径”云云。后来才明白这只是个快捷方式。
在命令行里打开一个 lnk 文件: Rundll32.exe url.dll, FileProtocolHandler %L
lnk 的二进制格式 http://www.vckbase.com/document/viewdoc/?id=1411
其实 .LNK根 Windows Shell 的关系比较紧密,在 Windows Vista 里,很多 Shell 对象都可以通过 .lnk 文件来打开,所以 lnk 文件里全部是用 CLSID 作为引导
在wsh/vbs里操作 .lnk 文件 script56.chm::/html/wsconManagingShortcuts.htm
2. *.url
.url 文件的格式和 .inf 的相似:
http://www.cyanwerks.com/file-format-url.html
3. *.pif
这是相当古老的一种格式了
http://www.smsoft.ru/en/pifdoc.htm
4. FolderShortcut
这个是未公开的一种快捷方式吧,不要理解成 文件夹的快捷方式了,我记得是从Win98就开始用这个东东了,貌似是和 Active Desktop 技术一起出现的。国内的首次公开是在这个帖子 http://bbs.onegreen.net/TopicOther.asp?t=5&BoardID=2&id=1414 ,最简单的 文件夹快捷方式 是把一个文件夹拖放到 开始菜单
如下图:上面那个是直接拖放生成的 文件夹快捷方式,下面的是传统的 lnk 快捷方式。两者的明显不同是: 文件夹快捷方式 是可以在菜单里显示所指向目标文件夹的内容的。
更为可喜的是,文件夹快捷方式没有小箭头!
文件夹快捷方式的属性有点怪怪的呢
手工建立 文件夹快捷方式 的方法:
1. 在目标文件夹里建立一个 系统 隐藏 属性的 desktop.ini(cmd里 attrib +S +h desktop.ini),内容为:
[.ShellClassInfo]
CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
Flags=2
2. 保存,建立一个 一般的快捷方式,指向你的目标地址,名称为:target.lnk (必须是这个!)。
3. 把该文件夹设为 只读 属性
貌似文件夹快捷方式只能指向 文件夹 和 URL,不能指向文件。其实 文件夹快捷方式用在黑克攻防领域是相当的爽的,特别是结合 .lnk .url 的一些溢出,几乎是百发百中!(谁会想到,打开一个文件夹也会中病毒?)
5. HardLink
NTFS的一大特性。在XP下可以通过 fsutil 建立(需要管理员权限)。
C:\WINDOWS\system32>fsutil hardlink create
用法 : fsutil hardlink create <新文件名> <现有文件名>
例如 : fsutil hardlink create c:\foo.txt c:\bar.txt
HardLink有什么用呢?可以把一个文件,放到很多目录下,但是只占一个文件的空间,有点像那些 n 合 1 的光盘的原理。所以hardlink可以用来骗人啦,例如,我把我的一个2GB的GHOST镜像文件hardkink 1000次,那么我看这些所有文件的属性就是一个 2TB 啦,呵呵,其实我的硬盘没这么大。Hardlink 可以用来解决很多问题。比如说,系统里很多 dll 是重复的,我们就可以把一个 dll 做成很多 hardlink,这样可以大大的节省空间。需要注意的是,Hardlink 只实用于NTFS的分区,一个文件只能被Hardlink 1024ci ,而且只能在同一分区建立。
6. Junction Point
相比于Hardlink,Junction Point 可以看作文件夹的硬连接吧,Vista里 Junction 已经被完全的符号连接取代了。
7. Reparse Point
和Hardlink有点类似,不过是针对文件夹的,还是fsutil命令来管理
C:\WINDOWS\system32>fsutil reparsepoint
—- 支持的 REPARSEPOINT 命令 —-
query 查询重分析点
delete 删除重分析点
不过要建立的话,可以通过SysInternals的又一款作品 http://www.sysinternals.com/files/junction.zip 来建立
8. Symbolic Links
符号连接允许你创建一个指针(pointer),从目录的一个位置指向实际上位于别处的文件。NTFS并没有真正实现类似于UNIX系统中的符号连接,但通过重解析点,这种功能被模拟出来。实际上,一个符号连接就是一个重解析点,它将对一个文件的访问重定向到另一个文件。
9. Mount Point
可以通过 mountvol 命令来管理。严格的说这已经不是快捷方式了,不过可以把一个储存媒体挂载到一个NTFS的文件夹下。
10. Shell Object
其实呢,“字体”文件夹就是一种典型的 Shell 对象。下载 ShellExtView , ShellObjectEditor 。
11. Shell Command
常见的有
显示桌面.csf,内容为:
[Shell]
Command=2
IconFile=explorer.exe,3
[Taskbar]
Command=ToggleDesktop
改文件会DDE调用explorer来显示桌面
查看频道.scf
[Shell]
Command=3
IconFile=shdocvw.dll,-118
[IE]
Command=Channels
explorer.scf
[Shell]
Command=2
IconFile=explorer.exe,1
[Taskbar]
Command=Explorer
我总觉得 .scf 根 GNOME里的 .desktop 文件很相似呢,呵呵
12. subst
subst 是cmd下的一个命令,可以把一个路径(本地/UNC)虚拟为一个盘符,例如:
subst K: D:\temp
subst L: \\192.168.1.1\C$
由于NT/2k/XP/2003/Vista是基于Unicode的OS,所以甚至你可以用一个中文字符来作为盘符,例如:
subst 盘: D:\Temp
不信的可以看解图:
而且,中文盘符不会在资源管理中显示。
再例如,用A-Z之外特殊字符也可以作盘符,这可能是 DefineDosDevice() 的一个漏洞,例如:
subst ': C:\Windows
subst ?: C:\Windows 等等
还有一种是复制文件的时候,拖放对象的一种特殊快捷方式,这类快捷方式都是 0 字节的文件,也是通过DDE调用的。例如:
我的文档.mydocs
ZIP压缩文件夹.ZFSendToTarget
桌面.desklink
邮件.mapmail
Windows所支持的快捷方式基本上就这些了,快捷方式以极小的代价把一个文件在不同的位置展现了出来,给系统的使用带来了很大的方便,同时也带来了很多未知的安全隐患。如果有时间的话,下次继续,《快捷方式攻防战》
subst ??