如何使用C#代码创建快捷方式文件详解

前言

快捷方式是一种特殊的文件,扩展名为 lnk。有很多种方式来创建快捷方式,首先我们看一下快捷方式是什么。对快捷方式点右键,选择属性菜单,在弹出的属性对话框的常规Tab中可以看到,文件类型是快捷方式(.lnk),所以快捷方式本质上是lnk文件。

不过使用 C# 代码创建一个却并不那么容易,本文分享三种不同的方式创建快捷方式。

随处可用的代码

这是最方便的方式了,因为这段代码随便放到一段代码中就能运行:

/// <summary>
/// 为当前正在运行的程序创建一个快捷方式。
/// </summary>
/// <param name="lnkFilePath">快捷方式的完全限定路径。</param>
/// <param name="args">快捷方式启动程序时需要使用的参数。</param>
private static void CreateShortcut(string lnkFilePath, string args = "")
{
 var shellType = Type.GetTypeFromProgID("WScript.Shell");
 dynamic shell = Activator.CreateInstance(shellType);
 var shortcut = shell.CreateShortcut(lnkFilePath);
 shortcut.TargetPath = Assembly.GetEntryAssembly().Location;
 shortcut.Arguments = args;
 shortcut.WorkingDirectory = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
 shortcut.Save();
}

以上代码为当前正在运行的程序创建一个快捷方式。当然,如果你希望给其他文件创建快捷方式,就改一改里面的代码吧,将 TargetPath 和 WorkingDirectory 改为其他参数。

▲ 快捷方式属性(其中 Target 等同于上面的 TargetPath 和 Arguments 一起,Start in 等同于上面的 WorkingDirectory)

引用 COM 组件

引用 COM 组件 Interop.IWshRuntimeLibrary.dll 能够获得类型安全,不过本质上和以上方法是一样的。

private static void CreateShortcut(string lnkFilePath, string args = "")
{
 var shell = new IWshRuntimeLibrary.WshShell();
 var shortcut = (IWshRuntimeLibrary.IWshShortcut) shell.CreateShortcut(linkFileName);
 shortcut.TargetPath = Assembly.GetEntryAssembly().Location;
 shortcut.Arguments = args;
 shortcut.WorkingDirectory = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
 shortcut.Save();
}

兼容 .NET 3.5 或早期版本

如果你还在使用 .NET Framework 3.5 或更早期版本,那真的很麻烦。同情你以下,不过也贴一段代码:

private static void CreateShortcut(string lnkFilePath, string args = "")
{
 var shellType = Type.GetTypeFromProgID("WScript.Shell");
 var shell = Activator.CreateInstance(shellType);
 var shortcut = shellType.InvokeMember("CreateShortcut",
  BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod,
  null, shell, new object[] { linkFileName });
 var shortcutType = shortcut.GetType();
 shortcutType.InvokeMember("TargetPath",
  BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
  null, shortcut, new object[] { Assembly.GetEntryAssembly().Location });
 shortcutType.InvokeMember("Arguments",
  BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
  null, shortcut, new object[] { args });
 shortcutType.InvokeMember("WorkingDirectory",
  BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty,
  null, shortcut, new object[] { AppDomain.CurrentDomain.SetupInformation.ApplicationBase });
 shortcutType.InvokeMember("Save",
  BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod,
  null, shortcut, null);
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • C# 无需COM组件创建快捷方式的实现代码

    看了一下手中的一些小工具, 很多都是单文件但可以创建快捷方式, 于是翻遍 Google, 最后终于在俄罗斯论坛 RSDN 找到了一个很强大的类. 类文件下载: http://asen.googlecode.com/files/Shortcut.cs (无注释精简版)RSDN 原帖: http://www.rsdn.ru/forum/src/3098615.flat.aspx (带英文注释) 使用方法很简单, 把这个文件添加到你的项目中, 然后用法跟 COM 组件那个类似, 但稍有不同: 复制代码

  • C#实现创建桌面快捷方式与添加网页到收藏夹的示例

    今天来介绍一个小功能,就是把正在浏览的某网页添加到收藏夹中.完成这个功能主要是两步,首先要取得系统用户的收藏夹目录,第二是要根据获得页面地址在收藏夹目录创建一个快捷方式.具体我们就一起来了解一下吧. 一.C#创建快捷方式 要创建快捷方式须引用IWshRuntimeLibrary.dll,引用方式为:对项目添加引用-->选择COM组件-->选择"Windows Script Host Object Model"确定,则添加成功!接下来就是编码: /// <summary

  • C#实现在启动目录创建快捷方式的方法

    本文实例讲述了C#实现在启动目录创建快捷方式的方法.分享给大家供大家参考.具体如下: 添加引用,选择 COM 选项卡并选择 Windows Script Host Object Model /// <summary> /// 将文件放到启动文件夹中开机启动 /// </summary> /// <param name="setupPath">启动程序</param> /// <param name="linkname&qu

  • 如何使用C#代码创建快捷方式文件详解

    前言 快捷方式是一种特殊的文件,扩展名为 lnk.有很多种方式来创建快捷方式,首先我们看一下快捷方式是什么.对快捷方式点右键,选择属性菜单,在弹出的属性对话框的常规Tab中可以看到,文件类型是快捷方式(.lnk),所以快捷方式本质上是lnk文件. 不过使用 C# 代码创建一个却并不那么容易,本文分享三种不同的方式创建快捷方式. 随处可用的代码 这是最方便的方式了,因为这段代码随便放到一段代码中就能运行: /// <summary> /// 为当前正在运行的程序创建一个快捷方式. /// <

  • Python学习之文件的创建与写入详解

    目录 内置函数 - open 获取文件对象 open() 函数 利用文件对象进行创建与写入 文件操作的写入模式 文件对象的写入操作方法 实战小案例 在前面章节我们通过 os包学习了如何创建.读取一个文件夹,但是并没有学习如何创建.读写一个文件,接下来我们就学习关于文件的处理.当我们学习完文件处理之后,就可以随意读写文件. 内置函数 - open 获取文件对象 open() 函数 open()函数是是python的读写文件的基本函数,它可以生成文件对象可以创建,也可以操作文件的读写. 用法: op

  • java读取resources文件详解及实现代码

    java读取resources文件详解及实现代码 Java项目中,经常需要将资源文件打包放在项目中,然后在项目中去读取对应的文件. 实现代码: String str = ReadFile.read(getClass().getResourceAsStream("sence/"+file)); public static String read(InputStream inputStream) { BufferedReader reader = null; String laststr

  • java存储以及java对象创建的流程(详解)

    java存储: 1)寄存器:这是最快的存储区,位于处理器的内部.但是寄存器的数量有限,所以寄存器根据需求进行分配.我们不能直接进行操作. 2)堆栈:位于通用RAM中,可以通过堆栈指针从处理器那里获取直接支持.堆栈指针往下移动,则分配新的内存.网上移动,则释放内存.但是 在创建程序的时候必须知道存储在堆栈中的所有项的具体生命周期,以便上下的移动指针.一般存储基本类型和java对象引用. 3)堆:位于通用RAM中,存放所有的java对象,不需要知道具体的生命周期. 4)常量存储:常量值通常直接存放在

  • Android 中Manifest.xml文件详解

    Android 中Manifest.xml文件详解 每一个Android项目都包含一个清单(Manifest)文件--AndroidManifest.xml,它存储在项目层次中的最底层.清单可以定义应用程序及其组件的结构和元数据. 它包含了组成应用程序的每一个组件(活动.服务.内容提供器和广播接收器)的节点,并使用Intent过滤器和权限来确定这些组件之间以及这些组件和其他应用程序是如何交互的. 它还提供了各种属性来详细地说明应用程序的元数据(如它的图标或者主题)以及额外的可用来进行安全设置和单

  • 基于Maven的pom.xml文件详解

    如下所示: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <!-- 父项

  • 基于make命令与makefile文件详解

    一.多个源文件带来的问题 在编写c/c++测试程序时,我们习惯每次修改一处代码,然后就马上编译运行来查看运行的结果.这种编译方式对于小程序来说是没有多大问题的,可对于大型程序来说,由于包含了大量的源文件,如果每次改动一个地方都需要编译所有的源文件,这个简单的直接编译所有源文件方式对程序员来说简直是噩耗. 我们看一个例子: // main.c #include "a.h" // 2.c #include "a.h" #include "b.h" /

  • 对Django中static(静态)文件详解以及{% static %}标签的使用方法

    在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等.因此在DTL中加载静态文件是一个必须要解决的问题.在DTL中,使用static标签来加载静态文件.要使用static标签,首先需要{% load static %}. 加载静态文件的步骤如下: 首先确保django.contrib.staticfiles已经添加到settings.INSTALLED_APPS中. 确保在settings.py中设置了STATIC_URL. 注意: 上面两条都是在创建Dja

  • DJango的创建和使用详解(默认数据库sqlite3)

    1.安装虚拟环境 虚拟环境是真实python环境的复制版本. 安装虚拟环境的命令: 1)sudo pip install virtualenv #安装虚拟环境 2)sudo pip install virtualenvwrapper #安装虚拟环境扩展包 3)编辑家目录下面的.bashrc文件,添加下面两行. export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh 4)使用source .b

  • Android Studio 3.5版本JNI生成SO文件详解

    学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类 package com.journey.org; public class JniHello{ static { System.loadLibrary("JniHello") } public static native String welcomeJniStudy(); } 2.创建通用工

随机推荐