四联光电智能照明论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2034|回复: 3
打印 上一主题 下一主题

C#设置软件开机自动启动

[复制链接]
  • TA的每日心情
    开心
    2022-6-10 09:59
  • 366

    主题

    741

    帖子

    9649

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    9649
    跳转到指定楼层
    楼主
    发表于 2016-10-28 10:29:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 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();
                }  
            }
  • TA的每日心情
    开心
    2022-6-10 09:59
  • 366

    主题

    741

    帖子

    9649

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    9649
    沙发
     楼主| 发表于 2016-10-28 10:39:13 | 只看该作者
    using Microsoft.Win32;
  • TA的每日心情
    开心
    2022-6-10 09:59
  • 366

    主题

    741

    帖子

    9649

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    9649
    板凳
     楼主| 发表于 2016-10-28 11:30:09 | 只看该作者

    RegistryKey rk = Registry.LocalMachine;
    需要管理员权限。
    可以直接用
    RegistryKey rk = Registry.CurrentUser;
    金山词霸和QQ这些启动都是用的这个
    或可以继续研究一下如何在程序中获得管理员权限
  • TA的每日心情
    开心
    2022-6-10 09:59
  • 366

    主题

    741

    帖子

    9649

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    9649
    地板
     楼主| 发表于 2016-10-28 11:54:22 | 只看该作者
    该方法还没有在启动时判断是否已加入注册表自动启动,因此需要加入:
            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中加入该函数。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Silian Lighting+ ( 蜀ICP备14004521号-1 )

    GMT+8, 2024-4-28 20:52 , Processed in 1.062500 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表