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


相关推荐

  • size_t和int区别

    size_t和int区别size_t和intsize_t是一些C/C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。size_t的真实类型与操作系统有关。在32位架构中被普遍定义为:typedefunsignedintsize_t;而在64位架构中被定义为:typedefunsignedlongsize_t;size_t在32位架构上…

    2022年6月6日
    100
  • pycharm添加搜索路径_pycharm系统找不到指定路径

    pycharm添加搜索路径_pycharm系统找不到指定路径为了能让python解释器找到我安装的python包的位置,我把该位置添加到了PYTHONPATH中,结果试了半天,pycharm中的解释器都没能检测到我那个包的存在,而在终端打开python的命令交互模式都是可以获取我在PYTHONPATH中设置的路径的。(气得我一口老血喷出来,哪位大神要是知道这是什么情况,敬请告知呀喵。感激不尽呦^_^)好了,说正事了。pycharm这么气人怎么办呢?闹了半

    2022年8月27日
    8
  • PD快速充电协议(转)[通俗易懂]

    PD快速充电协议(转)[通俗易懂]来源-作者@:http://www.elecfans.com/d/647097.html建议读者阅读原文,确保获得完整的信息1.PD充电协议是什么意思    PD充电协议是USB-IF组织公布的功率传输协议,它可以使目前默认最大功率5V/2A的type-c接口提高到100W,同时谷歌宣布Android7.0以上的手机搭载的快充协议必须支持PD协议,意在统一快充市场。2.PD协议快充是什么意思   …

    2025年8月8日
    4
  • nuget的原理_NuGet 跨平台插件

    nuget的原理_NuGet 跨平台插件NuGet跨平台插件NuGetcrossplatformplugins07/01/2018本文内容已添加NuGet4.8+跨平台插件支持。InNuGet4.8+supportforcrossplatformpluginshasbeenadded.这是通过生成新的插件扩展性模型实现的,该模型必须符合一组严格的操作规则。Thiswasachievedwith…

    2025年6月15日
    5
  • 雷达探测障碍物是应用了超声波吗_超声波雷达无返回数据

    雷达探测障碍物是应用了超声波吗_超声波雷达无返回数据超声波(Ultrasound,又称超声波雷达)定位,即使用发射探头发出频率大于20KHz的声波和计算飞行时间来探测距离。常用的超声波频率有40KHz、48KHz和58KHz,其中最常用的频率是40KHz。使用超声波定位,一般精度在1cm~3cm之间,探测适用范围在0.2m~5m之间。​超声波指向性强,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在

    2025年10月25日
    3
  • js数组对象转字符串方法_数组表示

    js数组对象转字符串方法_数组表示Js数组转对象(特殊格式)arr:[{},{},{}]转化为obj:{ {},{},{}}利用ES6语法:letobj={…arr};

    2025年10月20日
    2

发表回复

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

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