zoukankan      html  css  js  c++  java
  • 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");
                    }
                }
            }
        }
    }
  • 相关阅读:
    [转]win7 系统装SQLServer2000 成功。
    Windows CE 电源管理(转贴)
    [转]Win7系统下VS2005_2008不识别WinCE5 SDK
    [转]windows 7 下ASP.net 本地配置 ( IIS 7)
    [转]SelectObject() 装载字体 VC EVC
    Mobile Development: Disable Windows Mobile 6.5 Start and Close Button
    [转]WebForm 与 winform 路径获取
    1. chromedriver的下载和配置
    Slf4j打印异常的堆栈信息
    写个日志请求切面,前后端甩锅更方便
  • 原文地址:https://www.cnblogs.com/BluceLee/p/13948153.html
Copyright © 2011-2022 走看看