C++生成LNK文件及LNK文件简单解析

话不多说,直接上代码吧。

生成快捷方式代码:

int CreateLnk(const wchar_t* TARGET, const wchar_t* LNKFILE)
{if (S_OK != CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE))  //初始化COM库失败return 1;IShellLinkW* psl;HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&psl));if (SUCCEEDED(hr)){psl->SetPath(TARGET);IPersistFile* ppf;hr = psl->QueryInterface(&ppf);if (SUCCEEDED(hr)){hr = ppf->Save(LNKFILE, TRUE);ppf->Release();if (!SUCCEEDED(hr))return 2;}else{psl->Release();return 3;}}elsereturn 4;CoUninitialize();return 0;
}

简单解析快捷方式:

int ResolveLnk(wchar_t* TARGET, const wchar_t* LNKFILE)
{if (CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE) != S_OK){//初始化COM库失败return 5; }IShellLinkW* psl;HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&psl));if (SUCCEEDED(hr)){IPersistFile* ppf;hr = psl->QueryInterface(&ppf);if (SUCCEEDED(hr)){hr = ppf->Load(LNKFILE, STGM_READ);if (SUCCEEDED(hr)){//CHAR sz_args[MAX_PATH];hr = psl->GetPath(TARGET, MAX_PATH, NULL, SLGP_RAWPATH);if (SUCCEEDED(hr)){//wcout << L"Link to: " << TARGET << endl;CoUninitialize();return 0;}else{cout << "Get Link to failed" << endl;CoUninitialize();return 1;}}else{cout << "Open file failed" << endl;CoUninitialize();return 2;}ppf->Release();}else{cout << "System Error When read file" << endl;CoUninitialize();return 3;}psl->Release();}else{cout << "Operation failure" << endl;CoUninitialize();return 4;}
}

完整测试代码已经上传到GitHub中,链接:https://github.com/WangHan0711/Lnk_Handle。欢迎各位大神指正。

C++生成LNK文件及LNK文件简单解析相关推荐

  1. VS2017生成一个简单的DLL文件 和 LIB文件——C语言

    下面我们将用两种不同的姿势来用VS2017生成dll文件(动态库文件)和lib文件(静态库文件),这里以C语言为例,用最简单的例子,来让读者了解如何生成dll文件(动态库文件) 生成动态库文件 姿势一 ...

  2. 后缀是lnk是什么文件_后缀名为lnk的文件是什么文件?急!!

    在documents and settings下recent文件夹里的后缀名为lnk的文件是什么文件?我用优化大师清理出来的垃圾文件中就有这样的文件,能删除吗? 快捷方式文件 当你把原文件删除之后,他 ...

  3. 后缀是lnk是什么文件_ink文件是什么文件?与lnk文件只差一个字母,却有天壤之别!...

    ink文件是什么文件?与lnk文件只差一个字母,却有天壤之别! 看到网上错误的解答说,电脑文件扩展名为".ink"的文件代表着一种"快捷方式",这样说的人实际上 ...

  4. python自动整理文件,就这么简单

    平时工作没有养成分类的习惯,整个桌面杂乱无章都是文档和资料,几乎快占满整个屏幕了.所以必须要整理一下了,今天我们来看下用python如何批量将不同后缀的文件移动到同一文件夹. 演示效果: 使用前 使用 ...

  5. php创建压缩文件 保存路径,通过php生成zip压缩文件,支持文件和压缩包路径查找...

    /* * new creatZip($_dir,$_zipName); *@ _dir是被压缩的文件夹名称,可使用路径,例 'a'或者'a/test.txt'或者'test.txt' *@ _zipN ...

  6. 【Caffe-Ubuntu】JSON 标签生成自己的 Caffe-LMDB 数据文件

    0:生成 LMDB 的流程 已有的 json 数据集,可以通过 labelme 等开源工具标注,或者自己写脚本生成 将 json 文件转成 voc2007 格式的文件(labelme 格式转 VOC2 ...

  7. python selenium 下载文件_Python Selenium —— 文件上传、下载,其实很简单

    很多selenium学习者被浏览器弹出的文件上传.下载框折磨的痛不欲生,今天博主就带你们轻松搞定上传和下载问题. 上传 上传弹框 文件上传是所有UI自动化测试都要面对的一个头疼问题,要处理这个问题,我 ...

  8. java中如何生成可执行的jar文件

    java中如何生成可执行的jar文件最简单的方法就是:jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$my ...

  9. [转载] pythonpandas读取csv文件最后一行_简单小案例(一):使用Pandas在Python中读取和写入CSV文件...

    参考链接: 使用Pandas在Python中读写CSV文件 前期文章链接: YOLOv3论文 https://arxiv.org/pdf/1804.02767.pdf 正文: 有许多方法可以在Pyth ...

最新文章

  1. OO学习之二——面向对象分析(OOD)的介绍
  2. php 判断是否gzip,PHP网站判断页面文件或图片是否经过gzip压缩
  3. MATLAB实现最优低通滤波器的函数
  4. Delphi 与 DirectX 之 DelphiX(33): TDIB.SmoothRotateWrap();
  5. 【Python-ML】SKlearn库决策树(DecisionRegression) 使用
  6. 【万字长文详解】Python库collections,让你击败99%的Pythoner
  7. Hive 0.13.1 和HBase 0.98.6.1整合
  8. 程序员下班后收到工作信息怎么办?
  9. oracle中偏移,怎么对相同的坐标点偏移?
  10. JavaScript中的call、apply、bind如何使用
  11. 搜索复习-基础水题(一共12道)
  12. centos 解决“不在 sudoers 文件中。此事将被报告“的问题
  13. 非专业人士观点(3)不要假如
  14. 阅读html查看器,手机HTML查看器
  15. 零一块学计算机二级题库,2017年计算机二级office题库及答案
  16. 随机密码生成器 java
  17. Python 转义字符与原字符
  18. 前端开发:遇到提示Invalid prop:type check failed for prop “modelValue“. Expected Number…的解决方法
  19. 不写一行代码,让Excel轻松制作动态图表​
  20. 威联通搭建Frp实现内网穿透

热门文章

  1. android图片特效处理之锐化效果
  2. 动态合批和静态合批的区别
  3. luogu p4995 跳跳
  4. Linux下的SMB服务(samba服务器)
  5. C语言编程题:用泰勒级数求自然数e的近似值
  6. 给tensor增加维度 或 减少维度
  7. php程序员试题,php面试题带答案,php程序员笔试题与答案(一)
  8. TcaplusDB亮相全球云计算大会 一举斩获优秀解决方案奖
  9. 【JAVA】删除整个文件夹(深度删除)
  10. android虚拟机接收真实短信,向Android模拟器打电话发短信的简单方法