【c#】开机自启动

【c#】开机自启动【c#】开机自启动

大家好,又见面了,我是你们的朋友全栈君。

   做的项目上线了,又激动又紧张,但是之前都是在理想情况下开发的,没想到还有开机自启这个小功能,所以有完善了一下。

#region 将程序添加到启动项
        private static RegistryKey HKCU = Registry.CurrentUser;
        private static string name = "DBAnalyzer";
        private static string path = Application.ExecutablePath;
        /// <summary>
        /// 注册表括操作将程序添加到启动项
        /// </summary>
        public static void SetRegistryKey(bool Started)
        {
            try
            {
                RegistryKey Run = HKCU.CreateSubKey(@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\");
                if (Started == true)
                {
                    try
                    {
                        Run.SetValue(name, path);
                        Run.Close();
                        HKCU.Close();
                        //this.SaveLog("注册表修改成功");
                        LogHelper.Info("注册表修改成功");
                    }
                    catch (Exception ex)
                    {
                        //this.SaveLog("注册表修改错误(开机自启未实现)!错误描述为:" + ex.Message.ToString());
                        LogHelper.Info("注册表修改错误(开机自启未实现)!错误描述为:" + ex.Message.ToString());
                    }
                }
                else
                {
                    if (Run.GetValue(name) != null)
                    {
                        Run.DeleteValue(name);
                        Run.Close();
                        HKCU.Close();
                    }
                    else
                        return;
                }
            }
            catch (Exception ex)
            {
                //this.SaveLog("将程序添加到启动项错误!错误描述为:" + ex.Message.ToString());
                LogHelper.Info("将程序添加到启动项错误!错误描述为:" + ex.Message.ToString());
            }
        }

        /// <summary>
        /// 获取是否开机启动
        /// </summary>
        /// <returns></returns>
        public static bool IsRegeditExit()
        {
            try
            {
                RegistryKey software = HKCU.OpenSubKey("SOFTWARE", true);
                RegistryKey aimdir = software.OpenSubKey(@"Microsoft\Windows\CurrentVersion\Run\", true);
                object runObj = aimdir.GetValue(name);
                if (runObj == null || !path.Equals(runObj.ToString()))
                    return false;
                else
                    return true;
            }
            catch (Exception ex)
            {
                //this.SaveLog("获取是否开机启动错误!错误描述为:" + ex.Message.ToString());
                LogHelper.Info("获取是否开机启动错误!错误描述为:" + ex.Message.ToString());
            }
            return false;
        }
        #endregion

客户端调用:

if (!IsRegeditExit())
{
    //添加开机启动
    SetRegistryKey(true);
}


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105676.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 域名url转发怎么设置_url和域名

    域名url转发怎么设置_url和域名URL转发技术就是将该域名的网站访问请求,通过浏览器端技术,转向到另外一个网站。域名URL转发分为url显性转发和URL隐性转发这里以万网域名为例教你如何设置显性url转发和隐性URL转发。

    2022年10月18日
    0
  • Java网络爬虫(七)–实现定时爬取与IP代理池

    Java网络爬虫(七)–实现定时爬取与IP代理池注:对代码及思路进行了改进—Java网络爬虫(十一)–重构定时爬取以及IP代理池(多线程+Redis+代码优化)定点爬取当我们需要对金融行业的股票信息进行爬取的时候,由于股票的价格是一直在变化的,我们不可能手动的去每天定时定点的运行程序,这个时候我们就需要实现定点爬取了,我们引入第三方库quartz的使用:packagetimeutils;importorg.quart

    2022年5月5日
    153
  • Nodejs基础:stream模块入门介绍与使用

    Nodejs基础:stream模块入门介绍与使用

    2022年3月3日
    32
  • java高级工程师_一名Java高级工程师需要学什么?

    java高级工程师_一名Java高级工程师需要学什么?从两方面讨论一名java高级工程师需要学些什么,具备什么能力,感兴趣的小伙伴们可以参考一下宏观上:1.技术广度方面至少要精通多门开源技术吧,研究过struts\spring等的源码。2.项目经验方面从头到尾跟过几个大项目,头是指需求阶段,包括需求调研。尾是指上线交付之后,包括维护阶段。3.架构经验方面有过分布式系统的架构和开发经验。对于跨系统的结构优化,数据存储的性能指标等有丰富经验。什么缓存啊、…

    2022年7月7日
    22
  • vue引入vant_vueaxios跨域请求

    vue引入vant_vueaxios跨域请求因为后端给的接口不是本地的接口,所以需要跨域来获取接口数据在vue.config.js中对其进行配置devServer:{host:’localhost’,port:3030,//端口https:false,proxy:{//配置跨域’/api’:{target:’http://xx.xx.xx.xxx’,//代理的接口域名以及端口号;ws:

    2022年9月27日
    0
  • MATLAB绘制统计折线图

    MATLAB绘制统计折线图MATLAB绘制实验数据折现图  在论文或者文章写作中,经常需要使用图形来表示我们的实验结果。一般来说,这种表示方式比表格更加直观、更加可视化。因此,本文给出一种使用MATLAB处理数据得到折线图的教程。1.待处理数据形式  待处理的数据为迭代次数与SR、time、RC、length、steerNum、steerAngle、validNode这七个指标的走势图。即随着迭代次数的增加,这七个指标的走势情况。并且,实验数据包含一个改进和两个对比,三个数据都保存在txt文件中,如下所示。dealme

    2022年6月10日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号