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

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

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

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
或者直接用手机扫描二维码查看更多博文:

时间: 2024-10-14 09:38:18

WinForm+C#代码实现控制应用程序自启动功能的相关文章

C# 用 trackbar来进行音量控制的程序代码

问题描述 C#用trackbar来进行音量控制的程序代码 解决方案 解决方案二: [DllImport("winmm.dll")]//引用winmm.dllpublicstaticexternlongwaveOutSetVolume(uintdeviceID,uintVolume);//参数为uintprivatevoidtrackBar1_Scroll(objectsender,EventArgse){waveOutSetVolume(0,Convert.ToUInt16(track

我有一个C#的Winform项目,里面有许多的程序代码....丢了.sin文件可以新建一个添加现有项目搞定,可是丢了csproj文件,怎么办呀?/

问题描述 我有一个C#的Winform项目,里面有许多的程序代码....丢了.sin文件可以新建一个添加现有项目搞定,可是丢了csproj文件,怎么办呀?/难道我要一个一个地把缀名为cs,resx,desigener...(好多呀)的文件一个一个地添加到解决方案的项目中吗/?? 解决方案 解决方案二:你都丢失了csproj啦,只能一个个的添加了吧解决方案三:没试过,你总有备份的文件,把以前的sln拷过来,把新加的包括进去,重新编译看看,或者直接新建项目,把所有内容拷过去,包括在项目中,编译

Java 菜单按钮控制绘图程序(求解答,急急急!!!)

问题描述 Java 菜单按钮控制绘图程序(求解答,急急急!!!) 用菜单和按钮来控制绘图 功能要求:实现简单绘图功能,具体要求:画直线,画空心或实心椭圆.画空心或实心矩形.画多边形(图形的位置和大小可在程序中设定). 界面要求:用图形界面实现. 图示一初始界面: 图示二使用菜单绘图: 图示三使用按钮绘图 解决方案 用 myeclipse 10 以上做吧 挺简单的,直接求代码,,不太好吧 解决方案二: http://download.csdn.net/download/wangjinxia00/2

java的监测工具jprofiler是否有控制原程序输入的功能?

问题描述 java的监测工具jprofiler是否有控制原程序输入的功能? 在下目前正在使用jprofiler集成eclipse做一些java代码的监测工作,我们知道对于不同的输入程序对资源的使用是不同的,为了对代码进行全面的分析,我必须手动设计各种不同的输入,重新运行程序再进行监测.jprofiler本身有没有不通过原程序直接进行输入的功能?

210 wince 用户按键-TQ210如何用用户按键控制应用程序窗口

问题描述 TQ210如何用用户按键控制应用程序窗口 各位好,我买了TQ210的板子,wince的系统,想做个用已有用户按键控制应用程序窗口切换的功能,现在enter键和退出键板子上就可以用,但是上下左右键要怎么修改?是修改驱动还是在应用程序里加上代码就可以?新人不知道从哪入手,请帮忙看看,谢谢!

c# Winform 获取麦克风音量 控制麦克风音量大小

问题描述 c#Winform获取麦克风音量控制麦克风音量大小请问怎么实现 解决方案 解决方案二:GOhttp://social.msdn.microsoft.com/Forums/zh-TW/233/thread/51c5acaa-046b-4b90-a96a-86a000140dd7解决方案三:在线等解决方案四:我上传的资源中有源代码解决方案五:直接贴上来不好吗?要不怎么给分解决方案六:引用3楼jq_whh的回复: 我上传的资源中有源代码 你那是什么东西,看标题是麦克风晕死解决方案七:这个调用

vc++-VC编程中提取源程序代码应用另一个程序

问题描述 VC编程中提取源程序代码应用另一个程序 请问各位大神,现在我有一段VC二维码识别程序的源代码,如何将其提取并编译成一个新的程序,满足从指定位置访问图片文件,输出识别信息?求指导. 在VC编程环境下实现,谢谢! 解决方案 既然有源代码,那么你要做的就是程序得到输入文件路径,然后传给源码中的函数对应参数,获取函数返回结果,进行处理. 解决方案二: 参考:http://blog.csdn.net/liuyu60305002/article/details/8713399 解决方案三: 有一段

数据结构算法-用代码敲一下这个程序!!!!

问题描述 用代码敲一下这个程序!!!! 用邻接矩阵存储一个有向图,写一算法计算出度为0的顶点个数,请各位大牛解答,急死了 解决方案 #include <iostream>using namespace std;#define MAXN 105int n m Edge[MAXN][MAXN]; //顶点数,有向边数,邻接矩阵:int Mc Md u v; //入度,出度,边的起点,终点:void Init() //初始化:{ memset(Edge 0 sizeof(Edge)); for(in

winform一些代码看不懂

问题描述 winform一些代码看不懂 求解 解决方案 就是双击事件,先调用父类的,然后然后又调用了一个biView的click方法 解决方案二: 看不懂的代码代码太长看不懂怎么办为什么看不懂代码部分 解决方案三: 就是双击事件,先调用父类的,然后然后又调用了一个biView的click方法 解决方案四: 如果执行了datagridview的celldoubleclick事件则在执行一次datagridview的celldoubleclick事件并执行biview_click事件