Windows下,如何知道快捷方式的目标文件路径?

yufuwan 2009-10-13 11:39:31


RT,C语言开发环境,某快捷方式名称为d:\open.lnk,其指向的文件为d:\opendemo.txt,
如果已经知道了该快捷方式的名称d:\open.lnk,如何知道其指向的文件的全路径d:\opendemo.txt?



具体的说,是这样一个问题,自己写了一个程序demo.exe,打开时可以接收字符串参数,如果该字符串参数是某种特定格式的文件,那么就打开该文件。但如果该字符串参数是指向该格式的文件的快捷方式,会因为无法找到该文件的实际路径而无法打开。如何解决此问题?
...全文
921 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yufuwan 2009-10-22
  • 打赏
  • 举报
回复
To hqin6:
lz可以使用记事本打开该快捷方式,看看里面的内容,可以从内容中提取的!

问题是我是在程序中打开的,不是直接在OS中操作的。。

To M_S_D_N:
如果MSDN没有明确文档,自行解析lnk文件格式的话,平台改变了就可能有问题。

MSDN本身就是建立在Windows平台的基础上的吧?


M_S_D_N 2009-10-20
  • 打赏
  • 举报
回复
如果MSDN没有明确文档,自行解析lnk文件格式的话,平台改变了就可能有问题。
太乙 2009-10-20
  • 打赏
  • 举报
回复
lz可以使用记事本打开该快捷方式,看看里面的内容,可以从内容中提取的!
yufuwan 2009-10-20
  • 打赏
  • 举报
回复
还是1楼和9楼比较靠谱,过几天结贴吧,再顶顶看。。。。直接有个dll一类的东西就好了。。。
mstlq 2009-10-15
  • 打赏
  • 举报
回复
随手写了一个做测试,还能用,仅供参考……
只限于快捷方式指向本地的文件,对于指向网络或者不指向文件的快捷方式,请慎用……

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv)
{

char filepath[256]={0};
unsigned int flag,off;
unsigned short int sflag;
char uch;
int i=0;
if(argc!=2)
{
puts("no filename!");
return -1;
}
FILE *fp=fopen(argv[1],"rb");
if(!fp)
{
puts("can not open file!");
return -1;
}
fread(&flag,4,1,fp);
if (flag!=0x4c)
{
puts("this is not a lnk file!");
fclose(fp);
return -1;
}
fseek(fp,0x14,SEEK_SET);
fread(&flag,4,1,fp);
fseek(fp,0x4c,SEEK_SET);

if(flag & 0x01)
{
fread(&sflag,2,1,fp);
fseek(fp,sflag,SEEK_CUR);
}

off = ftell(fp);
fseek(fp,off+0x10,SEEK_SET);
fread(&flag,4,1,fp);
fseek(fp,flag+off,SEEK_SET);

do
{
fread(&uch,1,1,fp);
filepath[i++]=uch;
}
while (uch!='\0');
fclose(fp);
printf("%s\n",filepath);
system("pause");
return 0;
}
lovewd 2009-10-15
  • 打赏
  • 举报
回复
windows快捷方lnk文件结构解析
http://www.vckbase.com/document/viewdoc/?id=1411
楼主读取文件结构里目标文件的路径
mstlq 2009-10-15
  • 打赏
  • 举报
回复
根据2楼的资料……
可以用纯c写一个……
yufuwan 2009-10-15
  • 打赏
  • 举报
回复
自己顶。。。。。心有不甘啊。。。
yufuwan 2009-10-14
  • 打赏
  • 举报
回复
没有简单直接的方法么。。。。。。自己写的一个小程序而已。。。要搞这么复杂啊。。。。而且是在C语言开发环境下的实现。。。
昵称很不好取 2009-10-13
  • 打赏
  • 举报
回复
转篇文章希望对楼主有帮助
http://www.upwinder.com/www/86/795.html
mstlq 2009-10-13
  • 打赏
  • 举报
回复
或者
http://blog.chinaunix.net/u1/59687/showart_498943.html
mstlq 2009-10-13
  • 打赏
  • 举报
回复
http://www.cnblogs.com/hetonghai/archive/2008/05/24/1206428.html
WaistCoat15 2009-10-13
  • 打赏
  • 举报
回复
如何从外壳程序链接或快捷方式获取文件名和路径:
http://support.microsoft.com/kb/q130698/

69,369

社区成员

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

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