炒下冷饭哈:Windows的12种快捷方式(2007-4-3修订版)

本文详细介绍了Windows系统中支持的12种快捷方式类型,包括*.lnk、*.url、*.pif等,并解释了它们的工作原理和技术特点。此外,还介绍了如何创建这些快捷方式以及它们在实际应用中的作用。
 

版权:electronixtar@gmail.com

快捷方式,很多人的反映就是那个小箭头,其实Windows支持12种快捷方式。

关于这个格式

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 对象。下载ShellExtViewShellObjectEditor

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所支持的快捷方式基本上就这些了,快捷方式以极小的代价把一个文件在不同的位置展现了出来,给系统的使用带来了很大的方便,同时也带来了很多未知的安全隐患。如果有时间的话,下次继续,《快捷方式攻防战》

 

 

 

对于NTFS上的分区的文件,创建Hardlink,对于文件夹,创建Junction。使用很方便,用右键拖拽一个文件/文件夹就行了,如图:

关于什么是 符号链接、hardlink、junction,可以参看我的一篇blog:[原创]Windows的12种快捷方式(2007-4-3修订版)

 

[内有附件]

附件:
LinkShellExt.rar

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>精美美食网页</title> <style> body { font-family: &#39;Segoe UI&#39;, Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 0; background-color: #f4f4f4; } header { background-color: #FFB6C1; /* 浅粉色 */ color: #ADD8E6; /* 浅蓝色 */ text-align: center; padding: 20px; background: linear-gradient(to right, #FFB6C1, #FFC0CB); } h1 { font-size: 36px; color: #ADD8E6; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); font-family: &#39;Pacifico&#39;, cursive; } nav { background-color: #333; text-align: center; } nav ul { list-style-type: none; margin: 0; padding: 0; } nav ul li { display: inline; margin: 0 10px; } nav ul li a { color: #ADD8E6; text-decoration: none; font-size: 18px; transition: color 0.3s ease; } nav ul li a:hover { color: #FFB6C1; } section { padding: 20px; margin: 20px; background-color: white; border-radius: 5px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } h2 { font-size: 24px; color: #FFB6C1; font-family: &#39;Montserrat&#39;, sans-serif; } .food-item { border: 1px solid #ccc; padding: 10px; margin: 10px; border-radius: 5px; display: inline-block; width: 22%; text-align: center; transition: transform 0.3s ease; } .food-item:hover { transform: scale(1.05); } button { background-color: #ADD8E6; color: #FFB6C1; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer; transition: background-color 0.3s ease; } button:hover { background-color: #B0E0E6; } footer { background-color: #333; color: #FFB6C1; text-align: center; padding: 10px; animation: fadeIn 1s ease; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .author-name { font-size: 20px; font-weight: bold; color: #ADD8E6; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); transition: color 0.3s ease; } .author-name:hover { color: #FFB6C1; } /* 新增样式 */ .special-food { background-color: #FFF6CC; border-color: #FFA500; } .special-food h3 { color: #FFB6C1; } .new-section { background-color: #E5F6FF; } .new-section h2 { color: #FFB6C1; font-style: italic; } </style> <link href="https://fonts.googleapis.com/css2?family=Pacifico&family=Montserrat&display=swap" rel="stylesheet"> </head> <body> <header> <h1>美食世界</h1> </header> <nav> <ul> <li><a href="#">首页</a></li> <li><a href="#">中餐</a></li> <li><a href="#">西餐</a></li> <li><a href="#">甜品</a></li> </ul> </nav> <section> <h2>热门美食</h2> <h2>热门美食</h2> <div class="food-item"> <h3>宫保鸡丁</h3> <p>宫保鸡丁是一道经典的川菜,口感鲜美,香辣可口。</p> <button onclick="alert(&#39;你选择了宫保鸡丁&#39;)">选择</button> </div> <div class="food-item"> <h3>披萨</h3> <p>披萨是一种广受欢迎的西餐,有各种口味可供选择。</p> <button onclick="alert(&#39;你选择了披萨&#39;)">选择</button> </div> <div class="food-item"> <h3>提拉米苏</h3> <p>提拉米苏是一款经典的意大利甜品,口感细腻,甜而不腻。</p> <button onclick="alert(&#39;你选择了提拉米苏&#39;)">选择</button> </div> <div class="food-item special-food"> <h3>北京烤鸭</h3> <p>北京烤鸭是具有世界声誉的北京著名菜式,色泽红润,肉质肥而不腻。</p> <button onclick="alert(&#39;你选择了北京烤鸭&#39;)">选择</button> </div> </section> <section class="new-section"> <h2>特色美食</h2> <div class="food-item"> <h3>寿司</h3> <p>寿司是日本传统美食之一,主要材料是用醋调味过的,再加上鱼肉、海鲜、蔬菜或鸡蛋等作配料。</p> <button onclick="alert(&#39;你选择了寿司&#39;)">选择</button> </div> <div class="food-item"> <h3>汉堡</h3> <p>汉堡是常见的快餐食品,通常由面包、肉饼、蔬菜和酱料组成。</p> <button onclick="alert(&#39;你选择了汉堡&#39;)">选择</button> </div> <div class="food-item"> <h3>冰淇淋</h3> <p>冰淇淋是一种冻甜品,有各种口味和款式。</p> <button onclick="alert(&#39;你选择了冰淇淋&#39;)">选择</button> </div> <div class="food-item special-food"> <h3>麻婆豆腐</h3> <p>麻婆豆腐是一道著名的川菜,具有“麻、辣、鲜、香、嫩、烫、形整”等特色。</p> <button onclick="alert(&#39;你选择了麻婆豆腐&#39;)">选择</button> </div> </section> <footer> <p class="author-name">作者:孙嘉阳</p> </footer> </body> </html> 将上述代码的首页中餐西餐甜品里增加一些下拉列表
11-13
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>精美美食网页</title> <style> body { font-family: &#39;Segoe UI&#39;, Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 0; background-color: #f4f4f4; } header { background-color: #FFB6C1; /* 浅粉色 */ color: #ADD8E6; /* 浅蓝色 */ text-align: center; padding: 20px; background: linear-gradient(to right, #FFB6C1, #FFC0CB); } h1 { font-size: 36px; color: #ADD8E6; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); font-family: &#39;Pacifico&#39;, cursive; } nav { background-color: #333; text-align: center; } nav ul { list-style-type: none; margin: 0; padding: 0; } nav ul li { display: inline-block; margin: 0 10px; position: relative; } nav ul li a { color: #ADD8E6; text-decoration: none; font-size: 18px; transition: color 0.3s ease; display: block; padding: 10px 20px; } nav ul li a:hover { color: #FFB6C1; } nav ul li ul { display: none; position: absolute; top: 100%; left: 0; background-color: #333; border-radius: 0 0 5px 5px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); z-index: 1; } nav ul li:hover ul { display: block; } nav ul li ul li { display: block; margin: 0; } nav ul li ul li a { padding: 10px 20px; white-space: nowrap; } section { padding: 20px; margin: 20px; background-color: white; border-radius: 5px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } h2 { font-size: 24px; color: #FFB6C1; font-family: &#39;Montserrat&#39;, sans-serif; } .food-item { border: 1px solid #ccc; padding: 10px; margin: 10px; border-radius: 5px; display: inline-block; width: 22%; text-align: center; transition: transform 0.3s ease; } .food-item:hover { transform: scale(1.05); } button { background-color: #ADD8E6; color: #FFB6C1; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer; transition: background-color 0.3s ease; } button:hover { background-color: #B0E0E6; } footer { background-color: #333; color: #FFB6C1; text-align: center; padding: 10px; animation: fadeIn 1s ease; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .author-name { font-size: 20px; font-weight: bold; color: #ADD8E6; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); transition: color 0.3s ease; } .author-name:hover { color: #FFB6C1; } /* 新增样式 */ .special-food { background-color: #FFF6CC; border-color: #FFA500; } .special-food h3 { color: #FFB6C1; } .new-section { background-color: #E5F6FF; } .new-section h2 { color: #FFB6C1; font-style: italic; } /* 下拉列表样式 */ select { background-color: #ADD8E6; color: #FFB6C1; border: none; padding: 5px 10px; border-radius: 5px; font-size: 16px; } option { background-color: #ADD8E6; color: #FFB6C1; } </style> <link href="https://fonts.googleapis.com/css2?family=Pacifico&family=Montserrat&display=swap" rel="stylesheet"> </head> <body> <header> <h1>美食世界</h1> </header> <nav> <ul> <li> <a href="#">首页</a> <ul> <li><a href="#">美食新闻</a></li> <li><a href="#">热门推荐</a></li> </ul> </li> <li> <a href="#">中餐</a> <ul> <li><a href="#">川菜</a></li> <li><a href="#">粤菜</a></li> <li><a href="#">鲁菜</a></li> </ul> </li> <li> <a href="#">西餐</a> <ul> <li><a href="#">意大利餐</a></li> <li><a href="#">法国餐</a></li> <li><a href="#">美国餐</a></li> </ul> </li> <li> <a href="#">甜品</a> <ul> <li><a href="#">蛋糕</a></li> <li><a href="#">冰淇淋</a></li> <li><a href="#">布丁</a></li> </ul> </li> </ul> </nav> <section> <h2>热门美食</h2> <div class="food-item"> <h3>宫保鸡丁</h3> <p>宫保鸡丁是一道经典的川菜,口感鲜美,香辣可口。</p> <button onclick="alert(&#39;你选择了宫保鸡丁&#39;)">选择</button> </div> <div class="food-item"> <h3>披萨</h3> <p>披萨是一种广受欢迎的西餐,有各种口味可供选择。</p> <button onclick="alert(&#39;你选择了披萨&#39;)">选择</button> </div> <div class="food-item"> <h3>提拉米苏</h3> <p>提拉米苏是一款经典的意大利甜品,口感细腻,甜而不腻。</p> <button onclick="alert(&#39;你选择了提拉米苏&#39;)">选择</button> </div> <div class="food-item special-food"> <h3>北京烤鸭</h3> <p>北京烤鸭是具有世界声誉的北京著名菜式,色泽红润,肉质肥而不腻。</p> <button onclick="alert(&#39;你选择了北京烤鸭&#39;)">选择</button> </div> </section> <section class="new-section"> <h2>特色美食</h2> <div class="food-item"> <h3>寿司</h3> <p>寿司是日本传统美食之一,主要材料是用醋调味过的,再加上鱼肉、海鲜、蔬菜或鸡蛋等作配料。</p> <button onclick="alert(&#39;你选择了寿司&#39;)">选择</button> </div> <div class="food-item"> <h3>汉堡</h3> <p>汉堡是常见的快餐食品,通常由面包、肉饼、蔬菜和酱料组成。</p> <button onclick="alert(&#39;你选择了汉堡&#39;)">选择</button> </div> <div class="food-item"> <h3>冰淇淋</h3> <p>冰淇淋是一种冻甜品,有各种口味和款式。</p> <button onclick="alert(&#39;你选择了冰淇淋&#39;)">选择</button> </div> <div class="food-item special-food"> <h3>麻婆豆腐</h3> <p>麻婆豆腐是一道著名的川菜,具有“麻、辣、鲜、香、嫩、烫、形整”等特色。</p> <button onclick="alert(&#39;你选择了麻婆豆腐&#39;)">选择</button> </div> </section> <footer> <p class="author-name">作者:孙嘉阳</p> </footer> </body> </html> 此代码结果分析和总结
最新发布
11-13
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值