四联光电智能照明论坛

标题: C#设置软件开机自动启动 [打印本页]

作者: gxm771208    时间: 2016-10-28 10:29
标题: C#设置软件开机自动启动
本帖最后由 gxm771208 于 2016-10-28 11:55 编辑

在winform上新建一个checkbox控件
添加响应消息
和如下代码:
private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked) //设置开机自启动  
            {
                MessageBox.Show ("设置开机自启动,需要修改注册表","提示");  
                string path = Application.ExecutablePath;
                RegistryKey rk = Registry.LocalMachine;
                RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
                rk2.SetValue("WorkAssist", path);
                rk2.Close();
                rk.Close();
            }
            else //取消开机自启动  
            {
                MessageBox.Show ("取消开机自启动,需要修改注册表","提示");  
                string path = Application.ExecutablePath;
                RegistryKey rk = Registry.LocalMachine;
                RegistryKey rk2 = rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run");
                rk2.DeleteValue("WorkAssist", false);
                rk2.Close();
                rk.Close();
            }  
        }
作者: gxm771208    时间: 2016-10-28 10:39
using Microsoft.Win32;
作者: gxm771208    时间: 2016-10-28 11:30

RegistryKey rk = Registry.LocalMachine;
需要管理员权限。
可以直接用
RegistryKey rk = Registry.CurrentUser;
金山词霸和QQ这些启动都是用的这个
或可以继续研究一下如何在程序中获得管理员权限
作者: gxm771208    时间: 2016-10-28 11:54
该方法还没有在启动时判断是否已加入注册表自动启动,因此需要加入:
        public void JudgeAutoStart()
        {
            string regpath = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
            RegistryKey rk = Registry.CurrentUser;
            RegistryKey rk2 = rk.OpenSubKey(regpath);
            if (rk2.GetValue("WorkAssist") != null)
            {
                checkBox1.Checked = true;
            }
            else checkBox1.Checked = false;
        }

并在Form_Load中加入该函数。




欢迎光临 四联光电智能照明论坛 (http://5xhome.com/) Powered by Discuz! X3.2