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

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

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

应用程序自启动设置-1

应用程序自启动设置-2

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

using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;

// Author : 付义方
namespace Tools.App
{
    public partial class AutoRun : Form
    {
        public string KeyName = "Tools数据导出服务程序";
        public AutoRun()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            try
            {
                string strName = Application.ExecutablePath;
                //string strnewName = strName.Substring(strName.LastIndexOf("\\") + 1);

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

                }
                else
                { //修改注册表,使程序开机时不自动执行。  
                    this.AutoMenu.Checked = false;
                    RegistryKey Rkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
                    if (Rkey == null)
                    {
                        Rkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
                    }
                    Rkey.DeleteValue(KeyName, false);
                    MessageBox.Show("程序已取消自启动设置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
            }
            catch//没有权限会异常            
            {
                MessageBox.Show("请您使用管理员权限打开应用程序!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }



        }



        private void AutoRun_Load(object sender, EventArgs e)
        {
            try
            {

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

        }
    }
}

以上是通过C#代码及利用注册表来实现应用程序自启动,如果需要通过电脑技巧来设置启动请看下一篇:通过启动项设置实现应用程序自启动功能,主要讲述通过启动项设置来完成自启动。

希望以上分享对初学朋友有些帮助,谢谢!
更多关注付义方技术博客:http://blog.csdn.net/fuyifang
或者直接用手机扫描二维码查看更多博文:
付义方CSDN博客二维码

目录
相关文章
|
9月前
|
JavaScript API Windows
一个操作windows窗口的类“clsWindow”,使用非常方便!含源码 V2.2
一个操作windows窗口的类“clsWindow”,使用非常方便!含源码 V2.2
143 0
一个操作windows窗口的类“clsWindow”,使用非常方便!含源码 V2.2
|
C# 项目管理
WPF 控制程序只能启动一次
原文:WPF 控制程序只能启动一次 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jsyhello/article/details/7411898 ...
1000 0
|
安全 区块链 C#
WPF如何实现一款类似360安全卫士界面的程序?(共享源码!)
原文:WPF如何实现一款类似360安全卫士界面的程序?(共享源码!)    以前学习Windows Form编程的时候,总感觉自己做的界面很丑,看到360安全卫士、迅雷等软件的UI设计都非常美观,心里总是憧憬着要是自己能实现这样的UI效果该多好!!!另一个困扰我的问题是,这个UI皮肤是如何用技术实现的呢?!虽然好多年过去了,但心里的憧憬和疑惑一直没有消失,而且越来越强烈。
1994 0
|
C# 前端开发 设计模式
WPF设计界面不执行代码
原文:WPF设计界面不执行代码 一般在我们在设计WPF XAML界面时,XAML 引用一些后端的类。比如UserControl、Converter、MVVM,引用 xmlns:ALLUserControl="clr-namespace:程序集名.ALLUserControl;assembly=程序集名"。
991 0
|
C#
WPF 启动唯一程序(项目,exe,实例)
原文:WPF 启动唯一程序(项目,exe,实例) 描述:用户多次快速开启WPF程序的时候  只运行起来 一个 程序(exe) 其他多开的 进程 自动关闭掉 App.xaml.cs文件   1 protected override void OnStartup(Startu...
1202 0
|
C#
wpf中防止界面卡死的写法
原文:wpf中防止界面卡死的写法 View Code this.button1.Content = "正在计算"; Action action = new Action(() => { System.
1898 0
相关产品
云迁移中心
推荐文章
更多