C#实现程序开机启动

Posted Avatarx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#实现程序开机启动相关的知识,希望对你有一定的参考价值。

 

 

如何用c#实现开机启动?其实用c#实现程序的开机启动大致有两种方法,就是写入注册表或者采用服务程序,最近一直研究着用C#来操作注册表,下面介绍的方法便是用注册表来实现程序随开机启动(高手就不用看了,嘿嘿...)。
1)引入命名空间 using Microsoft.Win32;

//打开注册表子项
RegistryKey key = Registry.LocalMachine.OpenSubKe("SOFTWARE//Microsoft//Windows//CurrentVersion//Run",true);

key.SetValue(程序的名称, 程序的路径);//设置为开机启动
为了安全性,还应该判断设置的文件是否存在以及该子项是否存在,所有完整代码如下:

private void btnShowOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog open = new OpenFileDialog();
            open.Filter = "可执行文件(*.exe)|*.exe";
            if (open.ShowDialog() == DialogResult.OK)
            {
                txtPath.Text = open.FileName;
            }
        }

        private bool runWhenStart(bool started,string exeName, 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(exeName, path);//设置为开机启动
                    key.Close();
                }
                catch
                {
                    return false;
                }
            }
            else
            {
                try
                {                   
                    key.DeleteValue(exeName);//取消开机启动
                    key.Close();
                }
                catch
                {
                    return false;
                }
            }
            return true;
        }

        private void btnSet_Click(object sender, EventArgs e)
        {
            if (txtPath.Text == "")//检查是否选择了文件
            {
                MessageBox.Show("请选择要随计算机一起启动的程序路径!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtPath.Focus();
                return;
            }           
            string path = txtPath.Text.Trim();
            string exeName = path.Substring(path.LastIndexOf("//") + 1);
            if (!File.Exists(path))//检查该文件是否存在
            {
                MessageBox.Show("文件不存在!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtPath.Text = "";
                txtPath.Focus();
                return;
            }
            if (runWhenStart(true,exeName, path))
            {
                MessageBox.Show("设置成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("设置失败!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            if (txtPath.Text == "")//检查是否选择了文件
            {
                MessageBox.Show("请选择要撤销随计算机一起启动的程序路径!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtPath.Focus();
                return;
            }
            string path = txtPath.Text.Trim();
            string exeName = path.Substring(path.LastIndexOf("//") + 1);
            if (!File.Exists(path))//检查该文件是否存在
            {
                MessageBox.Show("文件不存在!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtPath.Text = "";
                txtPath.Focus();
                return;
            }
            if (runWhenStart(false, exeName, path))
            {
                MessageBox.Show("撤销成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("撤销失败!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }


 

以上是关于C#实现程序开机启动的主要内容,如果未能解决你的问题,请参考以下文章

C#开机自动启动程序代码

c#写的winform设置了启动检查更新,又设置了开机自动启动,开机自启动时不能启动更新程序

C# Winform打包部署时添加注册表信息实现开机启动.

C# 设置程序开机自启动

C# 程序设置开机启动

C#中级-开机自动启动程序