标题：lnk
概述
lnk文件是用于指向其他文件的一种文件。 这些文件通常称为快捷方式文件.通常它以快捷方式放在硬盘上.以方便使用者快速的调用
其扩展名为.lnk
相关信息
Windows的.lnk文件windows的很多lnk文件（也就是快捷方式）都是带有参数的，但是自己并不真正了解，不知道有谁知道？自己通过实践摸索出一些，希望能给大家带来帮助： 
/play—在打开连接后自动运行媒体文件 
"%1" —打开连接后自动出现文件选取框选择文件 
/Play "%L" —打开winamp后自动出现List选择框选择文件播放列表 
“.lnk”是WINDOWS系统默认的快捷方式的扩展名，如果“文件夹选项”下设置为“隐藏已知文件类型的扩展名”，正常情况下“.lnk”是不显示的。你的快捷方式的扩展名显现出来，证明WINDOWS设置被中断，快捷方式为不可识别信息。修复的方法（1）点击“开始”→“运行”，键入“cmd”，进入命令提示符状态，用键盘敲入assoc.lnk=lnkfile（中间无空格），按回车即可。 
（2）点击“开始”→“运行”，键入“regedit”，进入注册表，搜索“HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\”下的“.lnk”键，修改其值为“lnkfile”，保存即可。 
两种办法本质一样，如果你不懂注册表建议采用第一种方法
______________________________________ 
WIN7系统电脑除了计算机，网络，回收站以外的图标都变成后缀为lnk的文件了,也就是打开快捷方式  的时候用别的程序打开后所有快捷方式都变化的情况。
步骤1：Windows vista\Windows 7 操作系统修复方法.......1、首先 win开始键+r   2、打开运行程序  3、输入: regedit  4、找到: 计算机\HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\currentversion\Explorer\FileExts\.lnk会发现有openwithlist 和 openwithprogids 两项，如果有其他的选项将其删除5、再将openwithlist 内的除默认以外的所有键值都删除6、将openwithprogids内的除默认和lnkfile以外的所有键值都删除.7、保存退出即可。
如何通过lnk文件获取该文件的执行路径和程序 
function LinkFileInfo(const lnkFileName:string;var info:LINK_FILE_INFO;const bSet:boolean):boolean; 
var 
hr:hresult; 
psl:IShelllink; 
wfd:win32_find_data; 
ppf:IPersistFile; 
lpw:pwidechar; 
buf:pwidechar; 
begin 
result:=false; 
getmem(buf,MAX_PATH); 
try 
if SUCCEEDED(CoInitialize(nil)) then 
if (succeeded(cocreateinstance(clsid_shelllink,nil,clsctx_inproc_server,IID_IShellLinkA,psl))) then 
begin 
hr:=psl.QueryInterface(iPersistFile,ppf); 
if succeeded(hr) then 
begin 
lpw:=stringtowidechar(lnkfilename,buf,MAX_PATH); 
hr := ppf.Load(lpw, STGM_READ); 
if succeeded(hr) then 
begin 
hr := psl.Resolve(0, SLR_NO_UI); 
if succeeded(hr) then 
begin 
if bSet then 
begin 
psl.SetArguments(info.Arguments); 
psl.SetDescription(info.Description); 
psl.SetHotkey(info.HotKey); 
psl.SetIconLocation(info.IconLocation,info.IconIndex); 
psl.SetIDList(info.ItemIDList); 
psl.SetPath(info.FileName); 
psl.SetShowCmd(info.ShowState); 
psl.SetRelativePath(info.RelativePath,0); 
psl.SetWorkingDirectory(info.WorkDirectory); 
if succeeded(psl.Resolve(0,SLR_UPDATE)) then 
result:=true; 
end 
else 
begin 
psl.GetPath(info.FileName,MAX_PATH, wfd,SLGP_SHORTPATH ); 
psl.GetIconLocation(info.IconLocation,MAX_PATH,info.IconIndex); 
psl.GetWorkingDirectory(info.WorkDirectory,MAX_PATH); 
psl.GetDescription(info.Description,CCH_MAXNAME); 
psl.GetArguments(info.Arguments,MAX_PATH); 
psl.GetHotkey(info.HotKey); 
psl.GetIDList(info.ItemIDList); 
psl.GetShowCmd(info.ShowState); 
result:=true; 
end; 
end; 
end; 
end; 
end; 
finally 
freemem(buf); 
end; 
end; 
//*******************调用***************** 
showmessage(\'FileName:\'+info.filename+#13+\'Description:\'+info.Description+#13+\'IconFilename:\'+info.IconLocation+\',\'+inttostr(info.IconIndex)+ 
#13+\'WordDir:\'+info.WorkDirectory+#13+\'Arguments:\'+info.Arguments+#13+\'ShorCuts:\'+shortcuttotext(s)); 
info.WorkDirectory:=\'D:\\Borland\\Delphi5\\projects\'; 
linkfileinfo(opendialog1.filename,info,true); 
end; 
end; 
============================================== 
function GetLinkFileName(sLinkFileName: string; var sTargetFileName: string): boolean; 
var 
psl: IShellLink; 
ppf: IPersistFile; 
hres, nLen: integer; 
pfd: TWin32FindData; 
pTargetFile: PChar; 
pwLinkFileName: PWideChar; 
begin 
Result := false; 
if SUCCEEDED(CoInitialize(nil)) then 
begin 
CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLinkA, psl); 
if (SUCCEEDED(hres)) then 
begin 
hres := psl.QueryInterface(IID_IPersistFile, ppf); 
if (SUCCEEDED(hres)) then 
begin 
nLen := MultiByteToWideChar(CP_ACP, 0, PChar(sLinkFileName), -1, pwLinkFileName, 0); 
GetMem(pwLinkFileName, nLen); 
ZeroMemory(pwLinkFileName, nLen); 
MultiByteToWideChar(CP_ACP, 0, PChar(sLinkFileName), -1, pwLinkFileName, nLen); 
ppf.Load(pwLinkFileName, STGM_READ); 
GetMem(pTargetFile, MAX_PATH); 
ZeroMemory(pTargetFile, MAX_PATH); 
hres := psl.GetPath(pTargetFile, MAX_PATH, pfd, SLGP_UNCPRIORITY ); 
if (SUCCEEDED(hres)) then 
begin 
sTargetFileName := StrPas(pTargetFile); 
Result := true; 
end; 
FreeMem(pTargetFile); 
FreeMem(pwLinkFileName); 
end; 
end; 
end; 
end;
lnk漏洞（快捷方式漏洞）
2010年7月16日，Windows快捷方式自动执行0day漏洞[CVE-2010-2568]（微软安全知识库编 号2286198）被披露，很快网上已经可以找到利用这个漏洞攻击的样本。利用Windows快捷方式自动执行0day漏洞可以做到：看一眼恶意软件就中 毒，而根本不需要去执行它。金山毒霸安全实验室预计在未来一段时间，这个漏洞将会被广泛使用，网民须高度重视。 
攻击者利用Windows快捷方式自动执行0day漏洞，可以制作一个特殊的lnk文件（LNK是快捷方式文件的扩展名），当Windows解析这个 LNK文件时，会自动执行指定的恶意程序。这个漏洞最佳利用通道是U盘、移动硬盘、数码存储卡，也可以是本地磁盘或网络共享文件夹，当U盘或网络共享文件 夹存在这样的攻击程序时，只需要使用资源管理器，或与资源管理器类似的应用程序查看这个文件夹，不需要手动运行病毒程序，病毒自己就会触发。
这个漏洞最令人吃惊的地方在于，“不需要双击病毒文件，仅看一眼文件图标就中毒”。几年前，曾经有个叫“新欢乐时光 (VBS.KJ)”的病毒广为流传，VBS.KJ病毒会在每个文件夹下生成desktop.ini和folder.htt文件(这两个文件控制了文件夹在 资源管理器中的显示)。只要打开被病毒修改过的含有desktop.ini和folder.htt的文件夹，不需要双击病毒，看一眼就中毒。现在和新欢乐 时光传播类似的病毒将要出现了，尽管我们现在还没有看到很多病毒作者利用Windows快捷方式漏洞传播，但相信这种病毒攻击一定会有。
Windows快捷方式自动执行0day漏洞存在所有流行的Windows版本，包括尚未公开发布的Windows 7 SP1 beta和Windows 2008 R2 SP1 beta。意味着，这个风险几乎遍布所有安装了Windows的电脑。
防止这个漏洞被利用，微软方面提供了几个暂时缓解的方案：
1.关闭快捷方式图标的显示，不过这会让Windows界面变得奇丑，因为一个个漂亮的桌面图标和开始菜单图标全都不显示了。
2.建议企业用户关闭WebClient服务，个人用户（一般不使用网络共享资源）可以不必考虑这个问题。
3.关闭U盘自动播放可以避免插上U盘的动作就中毒，只有手动查看文件夹才有风险。
4.以受限用户权限运行计算机可以降低风险
对于喜欢使用各种Windows美化版的用户来说，可能麻烦更大一些，这些美化版大都修改了shell32.dll，针对这个Windows 快捷方式自动执行0day漏洞的修补程序，可能去修补shell32.dll，可能会让这些美化版出现一些问题。倘若这些真的发生了，那些使用美化版的盗 版Windows用户也许会拒绝这个重要的安全补丁，从而加剧利用此漏洞的病毒传播。
这是一个需要安全厂商和所有消费者高度关注的安全漏洞，希望微软能在下一个例行补丁日到来之前提供应急补丁。金山毒霸安全实验室提供以下临时的紧急解决方案：　　
1.根本上解决，必须安装Windows补丁程序。待微软官方更新之后，用户须立即使用金山卫士或Windows Update安装补丁。
2.临时解决办法：安装金山网盾，升级后，获得对lnk漏洞（快捷方式漏洞）的免疫能力。
3.安装金山毒霸2011安全套装，检查U盘存储的文件，及时清理U盘中的病毒。
4.网管宜加强局域网共享权限的管理，关闭不受控的完全共享，避免病毒文件在局域网共享文件夹中传播。lnk病毒一打开程序，如ttplayer.exe,就会在程序目录下及任务管理器中生成lnk病毒(1张)
ttplayer.exe.lnk
ttplayer.exe.lnk.lnk
ttplayer.exe.lnk.lnk.lnk
ttplayer.exe.lnk.lnk.lnk.lnk
ttplayer.exe.lnk.lnk.lnk.lnk.lnk
……
重装系统也没用。中了lnk病毒的处理方法这个是最新的lnk病毒，不同于之前的lnk快捷方式病毒。
这个病毒有感染次数限制，忘了是18次还是14次了。第一次发现就不要操作了，否则很变态一个病毒。等着杀毒软件更新入库吧。
临时处理方法：
讲最后的那个（也就是最长的那个）lnk，复制后保存。（很重要）
然后在任务管理器中将其他的（不包括最长那个）的那些lnk都终止进程。
然后将最后那个lnk改名，一定要改名。
然后使用金山网盾（百度搜索“金山网盾”。第一个链接就是）
用里面的一键修复功能处理之后重启。