Windows下如何判断一个文件是否是快捷方式???

god_gxq 2007-12-10 09:16:04
Windows下,在程序中如何判断一个文件是否是快捷方式,也就是如何判断一个文件是link文件。别告诉我通过扩展名“.lnk”,这种方式有缺陷。有没有通过文件的属性之类的得到?
...全文
933 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xspace_time 2011-05-25
  • 打赏
  • 举报
回复
读取快捷方式中的目标路径名,并判断目标是否存在
zgh266 2011-05-25
  • 打赏
  • 举报
回复
存在这样的文件没有lnk扩展名,windows 却能识别把它作为快捷方式处理
辰岡墨竹 2010-10-03
  • 打赏
  • 举报
回复
快捷方式(Shortcut)是Shell的Link文件。你可以用Shell接口IShellLink提供的Resolve()来解析LNK文件,你可以指定SLR_NO_UI | SLR_NOUPDATE | SLR_NOSEARCH | SLR_NOTRACK不让系统去在目标缺失时自动寻找和更新链接。
luo_xuewu 2010-10-02
  • 打赏
  • 举报
回复
刚刚看到一个帖子,Windows2000下有的说快捷方式也是.EXE文件,有的说无后缀名,我没有用过不太清楚,但如果用后缀名来判断一个文件是否是快捷方式,很明显对程序来说存在极大的危险.
luo_xuewu 2010-10-02
  • 打赏
  • 举报
回复
是,把文件后缀名改成.LNK不是合法的快捷方式,但这要人工才能判断出来,我想楼主想问是的,如何通过函数就可以判断出一个文件是否是一个合法的快捷方式,通过后缀名来判断,在编写代码时就这样认为它是合法的,我认为这可能会让程序崩溃.个人愚见.
这个问题我也在找答案,还有通过快捷方式找到文件全名,正打算编写一个类似于鱼鱼桌面的简化版的程序,楼主有兴趣的话不妨加我QQ( 759976599 )一起学习,我学的是C/C++,其他语言都没学过.
JoseIsMe 2007-12-13
  • 打赏
  • 举报
回复
我觉得用扩展名是最好的方法
象楼主所说,存在用户改文件名的情况,如果把这个考虑进去的话,只能遍历所有文件,判断文件格式来判断他是不是一个快捷方式,这不现实,也不至于
晨星 2007-12-13
  • 打赏
  • 举报
回复
送键题是,如果一个文件的扩展名是“.txt”,难道你仅仅因为它的内容像个快捷方式就把它当作快捷方式,你认为这很合理么?
所以楼上说的没说,扩展名不是“.lnk”的,没必要看了,管它是什么内容呢,至少Windows不会把它当成快捷方式的。

至于那些虽然扩展名为“.lnk”,但却不能打开的,那就看你程序的目的了。看你的程序是要“找出所有的快捷方式文件”,还是要“找出所有的快捷方式文件,并判别其内容有效性”。
iambic 2007-12-13
  • 打赏
  • 举报
回复
判断扩展名。如果你的要求比较高,在扩展名基础上判断文件格式,扩展名不是lnk的就不要判断了。
还没听说过“打开一个文件是很费时的”这样的说法。
god_gxq 2007-12-12
  • 打赏
  • 举报
回复
可是如果判断格式的话,那么为了找出某个目录下的所有快捷方式,不就的把所有文件都打开一遍判断一下吗?
这样做效率是不是太低了呢?(打开一个文件是很费时的)
晨星 2007-12-11
  • 打赏
  • 举报
回复
楼上说的对。
Windows之所以会成功打开一个快捷方式,首先依靠的就是.lnk扩展名。
假如有一个本来好好的快捷方式,却被你把扩展名改成了“.doc”,那Windows也就无关正常打开这个快捷方式了。
iambic 2007-12-11
  • 打赏
  • 举报
回复
>如果我随便建个文件,将扩展名改成.lnk.那不就错了吗。

你随便建立个文件,然后把名字改成some.exe,那就是一个exe文件吗?显然不是,你要检查它是否符合exe的文件格式,是否是一个合法的exe。快捷方式也是这样。以.lnk结尾的就会被系统识别为一个快捷方式,但合法不合法是另外一回事了。

至于快捷方式的合法性,google: 快捷方式 格式
yxwsbobo 2007-12-11
  • 打赏
  • 举报
回复
看大小,,
langwan1314 2007-12-10
  • 打赏
  • 举报
回复
路过
god_gxq 2007-12-10
  • 打赏
  • 举报
回复
如果我随便建个文件,将扩展名改成.lnk.那不就错了吗。
laiwusheng 2007-12-10
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20020513/18/718933.html
iambic 2007-12-10
  • 打赏
  • 举报
回复
没什么属性。只要文件名以.lnk结尾的,文件的内容合法就是一个有效的快捷方式。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧