前几天,做个小程序时遇到的问题,在百度上搜索了很久,没有发现好的解决方案,在英文网站上立刻搜到办法,看来还是国外的资源要全面一些,只是Google经常访问不正常,没办法啊。

“C#如何获取快捷方式指向的目标文件”,这个问题在百度上搜索的大多数结果是打开快捷方式文件,把快捷方式文件按字节读入指数组中,然后自己编写代码逐字节读出目标文件路径,这种方法初学者就有点搞不清楚,特别是不了解捷方式文件组织方式的,用这个方法很费劲。

其实C#解决起来很简单,原理就是利用IWshRuntimeLibrary中的IWshShortcut类,就可以获取快捷方式指向的目标文件了。

以下是具体步骤:

一、在项目中添加“Windows Script Host Object Model”的引用

在项目上单击右键,选择“添加引用”,在“添加引用”对话框中选择“COM”组件选项卡,然后单击选择“Windows Script Host Object Model”,最后确定。在项目中就会出现“IWshRuntimeLibrary”,下面就可以编写代码了。

二、代码

用以下代码可以实现了。

1、首先引用这些:

using System.IO;

using IWshRuntimeLibrary;

2、编写函数:

private string 获取快捷方式文件指向的路径(string 快捷方式文件的路径)
{
//快捷方式文件的路径 = @"d:\Test.lnk";
if (System.IO.File.Exists(快捷方式文件的路径))
{
WshShell shell = new WshShell();
IWshShortcut 当前快捷方式文件IWshShortcut类 = (IWshShortcut)shell.CreateShortcut(快捷方式文件的路径);
//快捷方式文件指向的路径.Text = 当前快捷方式文件IWshShortcut类.TargetPath;
//快捷方式文件指向的目标目录.Text = 当前快捷方式文件IWshShortcut类.WorkingDirectory;
return 当前快捷方式文件IWshShortcut类.TargetPath;
}
else
{
return "";
}
}

我参考的英文原文链接:

http://forums.overclockers.co.uk/showthread.php?t=17966879

C#如何获取快捷方式指向的目标文件的更多相关文章

  1. C# 1.将整个文件夹复制到目标文件夹中 2.将指定文件复制到指定目标文件夹中

    ].Items.Clear(); string filePath = Application.StartupPath; string sourcePath = Path.Combine(filePat ...

  2. 【转载】C#指定文件夹下面的所有内容复制到目标文件夹下面

    在涉及到文件夹操作的过程中,有时候需要将文件夹下的所有内容复制拷贝到另一个文件夹,在C#的开发中有时候会遇到这个功能需求将指定文件夹下所有的内容复制到另一个文件夹,这个过程需要遍历所有的文件和目录.此 ...

  3. C# 读取快捷方式指向的文件

    C# 读取快捷方式指向的文件 [Flags()] public enum SLR_FLAGS { SLR_NO_UI = 0x1, SLR_ANY_MATCH = 0x2, SLR_UPDATE = ...

  4. 无法获取指向控制台的文件描述符 (couldn't get a file descriptor referring to the console)

    背景 最近收拾东西,从一堆杂物里翻出来尘封四年多的树莓派 3B 主机来,打扫打扫灰尘,接上电源,居然还能通过之前设置好的 VNC 连上.欣慰之余,开始 clone 我的 git 项目,为它们拓展一个新 ...

  5. Lichee(三) Android4.0该产品的目标文件夹,Lichee链接---extract-bsp

    由<Lichee() 在sun4i_crane平台下的编译>介绍了编译lichee的基本情况,我们终于得到了编译后的结果例如以下: out/ ├── android │   ├── bIm ...

  6. linux 目标文件调试

    前言如果普通编程不需要了解这些东西,如果想精确控制你的对象文件的格式或者你想查看一下文件对象里的内容以便作出某种判断,刚你可以看一下下面的工具:objdump, nm, ar.当然,本文不可能非常详细 ...

  7. 1.预处理,生成预编译文件(.文件): Gcc –E hello.c –o hello.i 2.编译,生成汇编代码(.s文件): Gcc –S hello.i –o hello.s 3.汇编,生成目标文件(.o文件): Gcc –c hello.s –o hello.o 4.链接,生成可执行文件: linux笔记

    1 动态查看日志 tail -f filename tail -1000f filename 2 解压当前目录内容为xxx.zip  zip -r xxx.zip ./* 3 查看内存使用情况 fre ...

  8. linux c 链接详解1-多目标文件链接

    1. 多目标文件的链接 摘自:linux c编程一站式学习 http://learn.akae.cn/media/index.html 可以学会在linux下将多个c语言文件一起编译. 现在我们把例  ...

  9. linux下的 sudo ln -s 源文件 目标文件

    这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接. 这个命令最常用的参数是-s,具体用法是:sudo l ...

随机推荐

  1. 详细的OS X Yosemite 10.10懒人版安装教程

    永远记住一句话:难,是因为不会.先是要放宽心态,才更利于解决安装过程中这样那样的问题.多尝试多动脑,不要有过份的依赖.很多问题到解决以后,才发现是如此的简单,我装黑苹果是拿来使用的,所以我的目的是装好 ...

  2. 如何在 PHP 中处理 Protocol Buffers 数据

    Protocol Buffers是谷歌定义的一种跨语言.跨平台.可扩展的数据传输及存储的协议,因为将字段协议分别放在传输两端,传输数据中只包含数据本身,不需要包含字段说明,所以传输数据量小,解析效率高 ...

  3. 《Entity Framework 6 Recipes》中文翻译——第九章EntityFramework在N层架构程序中的应用(七)

    在WCF服务中的序列化代理 问题 您有一个从查询返回的动态代理对象,你想要把它像POCO对象已经进行序列化.在序列化基于实体对象的POCO(普通旧CLR对象)时,实体框架会自动生成一个动态生成的派生类 ...

  4. 2014年GCT考试报名时

    第一阶段: 网上报名时间预计为2014年6月20日至2014年7月10日. 考生可在6月20日后在中国学位与研究生教育信息网(http://www.chinadegrees.cn/)网站报名.网报时按 ...

  5. Mybatis的简单示例

    首先新建一个JavaWeb项目并导入mybatis依赖的jar包,同时Mybatis是对数据库的操作所以我们需要在数据库中新建一个表user用来演示. 新建完表之后我们还需要建立相对应的实体类User ...

  6. DataTables warning (table id = 'myTable'): Requested unknown parameter '0' from the data source for row 0

    第一种方式:不用在js里设置列Html: <table id="myTable"> <thead> <tr> <th>Title-1 ...

  7. (重刷)HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,dijkstra解法。

    floyd解法 今天初看dijkstra,先拿这两题练手,其他变形题还是不是很懂. 模版题,纯练打字... HDU 1874: #include <cstdio> #define MAXN ...

  8. KindEditor图片上传到七牛云

    自己做了一个网站,编辑器用的是KindEditor,平时会涉及到KindEditor自带的图片上传,但是服务器用的是虚拟主机,没多少空间,就一直想着把图片放在免费的云存储空间,之前看KindEdito ...

  9. [转].NET进阶系列之一:C#正则表达式整理备忘

    本文转自:http://www.cnblogs.com/KissKnife/archive/2008/03/23/1118423.html 有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就 ...

  10. 关于在Eclipse中构建patch开发环境

    git仓库中不能添加空文件夹. 至于为什么git 仓库中不能添加空文件夹,我没有找到具体的原因. 在V2EX上有人说: 我猜是因为git的内部实现,即只对文件做快照决定的吧,另一方面空文件夹确实对源代 ...