【c#】开机自启动

来源:互联网 发布:姚明和奥尼尔对决数据 编辑:程序博客网 时间:2024/06/05 15:00

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

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



原创粉丝点击