Winform 创建桌面快捷方式并开机启动

文章一:

快捷方式实质上是一个扩展名为 .LNK 的文件

方法如下:

首先要添加引用 (如图)

 

就是那个Windows Script Host Object Model的类库....

然后在程序中引入命名空间

using  IWshRuntimeLibrary;

 有一些文件操作,所有要引入

using  System.IO;

关键方法如下:

///   <summary>
///  创建桌面快捷方式并开机启动的方法
///   </summary>
private   void  ShortcutAndStartup()
{
      // 获取当前系统用户启动目录
      string  startupPath  =  Environment.GetFolderPath(Environment.SpecialFolder.Startup);
      // 获取当前系统用户桌面目录
      string  desktopPath  =  Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

     FileInfo fileStartup  =   new  FileInfo(startupPath  +   " //亿掌通.lnk " );
     FileInfo fileDesktop  =   new  FileInfo(desktopPath  +   " //亿掌通.lnk " );

      if  ( ! fileDesktop.Exists)
     {
           WshShell shell  =   new  WshShell();
           IWshShortcut shortcut  =  (IWshShortcut)shell.CreateShortcut(
                 Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)  +
                   " // "   +   " 亿掌通.lnk "
                  );
           shortcut.TargetPath  =  Application.StartupPath  +   " // "   +   " Upgrade.exe " ; // 启动更新程序★
           shortcut.WorkingDirectory  =  System.Environment.CurrentDirectory;
           shortcut.WindowStyle  =   1 ;
           shortcut.Description  =   " 亿掌通 " ;
           shortcut.IconLocation  =  Application.ExecutablePath;
           shortcut.Save();
      }

       if  ( ! fileStartup.Exists)
      {
             // 获取可执行文件快捷方式的全部路径
             string  exeDir  =  desktopPath  +   " //亿掌通.lnk " ;
             // 把程序快捷方式复制到启动目录
            System.IO.File.Copy(exeDir, startupPath  +   " //亿掌通.lnk " ,  true );
      }
}

文章二:

创建桌面快捷方式+设置开机启动代码[C#、WinForm]

注意:

1.创建桌面快捷方式需要引用IWshRuntimeLibrary类库

2.设置开机启动需要使用Microsoft.Win32的Registry类

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//-----------------------
using System.IO;
using Microsoft.Win32;
using IWshRuntimeLibrary;
namespace OneApp
{
    public partial class FormOption : Form
    {
        public FormOption()
        {
            InitializeComponent();
        }
        private void FormOption_Load(object sender, EventArgs e)
        {
            //检查是否开机启动
            RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run", true);//打开注册表子项
            if (key == null)
            {
                key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE/Microsoft/Windows/CurrentVersion/Run");
            }
            checkBox1.Checked = (key.GetValue("发货审核") != null);
            key.Close();
            //检查是否建立桌面快捷方式
            bool b = System.IO.File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) +
                    "//" + "发货审核.lnk");
            checkBox2.Checked = b; 
        }
        private void buttonOption_Click(object sender, EventArgs e)
        {
            //设置为开机启动
            RunWhenStart(checkBox1.Checked, "发货审核", Application.ExecutablePath);
            //创建桌面快捷方式
            CreateDesktopLink(checkBox2.Checked);
        }
        private void RunWhenStart(bool Started, string name, string path)
        {
            RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run", true);//打开注册表子项
            if (key == null)
            {
                key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE/Microsoft/Windows/CurrentVersion/Run");
            }
            if (Started == true)//设置开机启动
            {
                try
                {
                    key.SetValue(name, path);
                    key.Close();
                }
                catch (Exception Err)
                {
                    MessageBox.Show(Err.Message);
                }
            }
            else//取消开机启动
            {
                try
                {
                    if (key.GetValue(name) != null)
                    {
                        key.DeleteValue(name, false);
                        key.Close();
                    }
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message);
                }
            }
        }
        private void CreateDesktopLink(bool Created)
        {
            if (Created == true)
            {
                //先判断是否存在
                if (!System.IO.File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) +
                    "//" + "发货审核.lnk"))
                {
                    WshShell shell = new WshShell();
                    IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(
                        Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) +
                        "//" + "发货审核.lnk"
                        );
                    shortcut.TargetPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
                    shortcut.WorkingDirectory = System.Environment.CurrentDirectory;
                    shortcut.WindowStyle = 1; //Normal window 
                    shortcut.Description = "发货审核插件";
                    //shortcut.IconLocation = System.Environment.SystemDirectory + "//" + "shell32.dll, 165";
                    shortcut.Save();
                }
            }
            else
            {
                //先判断是否存在
                if (System.IO.File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) +
                    "//" + "发货审核.lnk"))
                {
                    System.IO.File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) +
                    "//" + "发货审核.lnk");
                }
            }
        }
    }
}
原文地址:https://www.cnblogs.com/BluceLee/p/13948153.html