【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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ajax跨域的解决办法_前端跨域解决方案

    ajax跨域的解决办法_前端跨域解决方案什么是AJAX?AJAX是无需刷新页面就能够从服务器去的数据的一种方法,负责Ajax运作的核心对象是XMLHttpRequest(XHR)对象。同源策略是对XHR的一个主要约束,它为通信设置了“相同的域、相同的端口、相同的协议”这一限制。试图访问上述限制之外的资源都会引发安全错误,除非采用被认可的跨域解决方案。这个方案叫做CORS(Cross-OriginResource

    2022年8月24日
    9
  • ubuntu安装pycharm后找不到在哪_ubuntu安装类型

    ubuntu安装pycharm后找不到在哪_ubuntu安装类型1、下载PycharmLINUX版本2、复制到虚拟机,并解压在当前文件夹,右键安装包,点击“ExtractHere”3、打开终端,进入pycharm-2020.1.1/bin;4、执行pycharm.sh命令文件,开始安装;sh./pycharm.sh5.激活6.创建快捷方式6.1在/usr/share/applications创建一个文件:pycharm.desktop(touch,gedit,nano指令等)cd/usr/share/applicationssudoge

    2022年9月27日
    3
  • vlan教学_不同的vlan转发降低速度

    vlan教学_不同的vlan转发降低速度https://www.cnblogs.com/clover-toeic/p/3741115.html

    2022年8月10日
    10
  • 周鸿祎说腾讯_周鸿祎的3Q

    周鸿祎说腾讯_周鸿祎的3Q6月10日老杳吧的一个手机厂商聚会上,奇虎360董事长周鸿祎有一段很有意思的发言。他用充满煽动性的语言对手机厂商们描述了市场环境、分析了自己的“敌人”小米科技和整个互联网的“敌人”腾讯,并极力为自己的360手机合作平台招徕伙伴。他对在场的手机和相关硬件生产商说,“现在所有的互联网公司在琢磨怎么做手机的同时,我觉得手机公司应该琢磨自己怎么转型。” 酷派、中兴、华为一年出多少手机,这个量比小米

    2022年9月2日
    7
  • Adaptive thresholding using the integral image

    Adaptive thresholding using the integral image#include #include #include#includeusingnamespacestd; voidvvAdaptiveThreshold(IplImage*inImg,IplImage*outImg){intS=inImg->width>>5;intT=10;char*input,*bin;

    2022年5月16日
    23
  • SerDes扫盲_serdes是模拟还是数字

    SerDes扫盲_serdes是模拟还是数字原文标题:理解SerDes,原文地址:http://blog.sina.com.cn/s/blog_aec06aac01013m5g.htmlFPGA发展到今天,SerDes(Serializer-Deserializer)基本上是标配了。从PCI到PCIExpress,从ATA到SATA,从并行ADC接口到JESD204,从RIO到SerialRIO,…等等,都是在借助SerDes来…

    2025年6月1日
    3

发表回复

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

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