WinForm+C#代码实现控制应用程序自启动功能

本文主要讲述WinForm开发应用程序需要设置自启动功能,这个也是在实际开发中经常涉及到的,非常实用,所讲到的是通过注册表来控制程序是否自行启动,具体功能实现上两张图,更直观。 
如下图:

应用程序自启动设置-1

应用程序自启动设置-2

程序设置保持界面实现代码

<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> Microsoft.Win32;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> System;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> System.Collections.Generic;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> System.ComponentModel;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> System.Data;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> System.Drawing;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> System.IO;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> System.Linq;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> System.Text;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">using</span> System.Windows.Forms;

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">// Author : 付义方</span>
namespace Tools.App
{
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">partial</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">class</span> AutoRun : Form
    {
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">string</span> KeyName = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Tools数据导出服务程序"</span>;
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-title" style="box-sizing: border-box;">AutoRun</span>()
        {
            InitializeComponent();
        }

        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">button1_Click</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">object</span> sender, EventArgs e)
        {

            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span>
            {
                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">string</span> strName = Application.ExecutablePath;
                <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//string strnewName = strName.Substring(strName.LastIndexOf("\\") + 1);</span>

                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (AutoMenu.Checked)
                {
                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>.AutoMenu.Checked = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>;
                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (!File.Exists(strName))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//指定文件是否存在  </span>
                        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>;
                    Microsoft.Win32.RegistryKey Rkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>);
                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (Rkey == <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>)
                    {
                        Rkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"</span>);
                    }
                    Rkey.SetValue(KeyName, strName + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" -s"</span>);<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//修改注册表,使程序开机时自动执行。  </span>
                    MessageBox.Show(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"程序已设置自启动,重新启动计算机后即可生效!"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"提示"</span>, MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>
                { <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//修改注册表,使程序开机时不自动执行。  </span>
                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>.AutoMenu.Checked = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>;
                    RegistryKey Rkey = Registry.LocalMachine.OpenSubKey(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>);
                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (Rkey == <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>)
                    {
                        Rkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"</span>);
                    }
                    Rkey.DeleteValue(KeyName, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>);
                    MessageBox.Show(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"程序已取消自启动设置!"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"提示"</span>, MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
            }
            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">catch</span><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//没有权限会异常            </span>
            {
                MessageBox.Show(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"请您使用管理员权限打开应用程序!"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"提示"</span>, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }



        }



        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">AutoRun_Load</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">object</span> sender, EventArgs e)
        {
            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">try</span>
            {

                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">string</span> strName = Application.ExecutablePath;
                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (!File.Exists(strName))<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//指定文件是否存在  </span>
                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span>;
                Microsoft.Win32.RegistryKey Rkey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"</span>, <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>);
                <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (Rkey != <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">null</span>)
                {
                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">string</span> val = Rkey.GetValue(KeyName).ToString();
                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> (val == (strName + <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">" -s"</span>))
                    {
                        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>.AutoMenu.Checked = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">true</span>;
                    }
                    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>
                    {
                        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">this</span>.AutoMenu.Checked = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">false</span>;
                    }
                }
            }
            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">catch</span> (Exception ex)<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//没有权限会异常            </span>
            {
                <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//MessageBox.Show(ex.Message);</span>
                MessageBox.Show(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"请您使用管理员权限打开应用程序!"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"提示"</span>, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }
    }
}</code>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值