【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);
}


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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • arcgis python实例_arcgis二次开发_arcgis二次开发python_arcgis二次开发实例

    arcgis python实例_arcgis二次开发_arcgis二次开发python_arcgis二次开发实例[1.rar]-QQ连连看的源码.单消秒杀挂机等功能喜欢的朋友请拿去研究[qqCHAR.rar]-qq验证码识别程序可以叫准确的识别出qq登陆前的验证码[1.rar]-本书以Visualc++作为开发语言,结合大量实例,详细介绍了利用Arcobjects组件进行GIS二次开发的方法和过程。书中在讲述利用Arcobjects实现GIS功能的基础上,重点介绍了在Arcobjects环境…

  • 企业 keepalived 高可用项目实战

    企业 keepalived 高可用项目实战Listitem企业keepalived高可用项目实战1、KeepalivedVRRP介绍keepalived是什么keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。keepalived工作原理keepalived是以VRRP协议为实现基础的,VRRP全称VirtualRouterRedundancyProtocol,即虚拟路由冗余协议。虚拟路由冗余协议,可以认为是实现高可用的协议,即将N台提供相同功能的路由器组成一个..

  • 爬取4567电影网「建议收藏」

    爬取4567电影网「建议收藏」movie.py虫子#-*-coding:utf-8-*-importscrapyfrommoviePro1.itemsimportMoviepro1ItemclassMovieS

  • gradle项目导包出现Could not GET connect refuse 之类的

    gradle项目导包出现Could not GET connect refuse 之类的

  • mysql批量写入_mysql insert多条数据

    mysql批量写入_mysql insert多条数据最近新的项目写了不少各种insertBatch的代码,一直有人说,批量插入比循环插入效率高很多,那本文就来实验一下,到底是不是真的?测试环境:SpringBoot2.5 Mysql8 JDK8 Docker首先,多条数据的插入,可选的方案:foreach循环插入 拼接sql,一次执行 使用批处理功能插入搭建测试环境`sql文件:dropdatabaseIFEXISTStest;CREATEDATABASEtest;usetest;DROPT

  • Python 技巧篇-pip卸载python库实例演示,查看pip命令大全方法[通俗易懂]

    Python 技巧篇-pip卸载python库实例演示,查看pip命令大全方法[通俗易懂]Python技巧篇-pip卸载python库实例演示,查看pip命令大全方法。因为安装的PyHook3没安装对吧,有点问题,就想着把它卸载掉,然后再重新安装一个,那应该怎么卸载呢?非常简单,就是pipuninstallxxx,正好和我们安装时的pipinstallxxx对应,下面还有一个确定操作,填y就是继续了,n就是取消了。python库卸载演示。cmd直接输入pip,回车就可以看到pip的命令大全了。

    2022年10月18日

发表回复

您的电子邮箱地址不会被公开。

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