·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> [C#]设置或取消开机启动(注册表形式)

[C#]设置或取消开机启动(注册表形式)

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23
        /// <summary>
        /// 设置程序开机启动_注册表形式
        /// 参考
        /// http://syxc.iteye.com/blog/673972
        /// http://zouqinghua11111.blog.163.com/blog/static/67997654201242334620628/
        /// http://stackoverflow.com/questions/5089601/run-the-application-at-windows-startup
        /// 其他
        /// 管理员权限问题:
        /// 在打开的工程中,看下PRoperties 下面是否有app.manifest 这个文件,如果没有,右击工程在菜单中选择“属性”,
        /// 选中"Security",在界面中勾选"Enable ClickOnce Security Settings"后,在Properties下就有自动生成app.manifest文件。
        /// 打开app.manifest文件,将
        /// <requestedExecutionLevel level="asInvoker" uiaccess="false" />
        /// 改为
        /// <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
        /// 然后在"Security"中再勾去"Enable ClickOnce Security Settings"后,重新编译即可。
        /// </summary>
        /// <param name="path">需要开机启动的exe路径</param>
        /// <param name="keyName">注册表中键值名称</param>
        /// <param name="set">true设置开机启动,false取消开机启动</param>
        public static void StartupSet(string path, string keyName, bool set)
        {
            RegistryKey _reg = Registry.LocalMachine;
            try
            {
                RegistryKey _run = _reg.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
                if (set)
                {
                    _run.SetValue(keyName, path);
                }
                else
                {
                    Object _value = _run.GetValue(keyName);
                    Trace.WriteLine("StartupSet Finded :" + _value == null ? "Null" : _value);
                    if (_value != null)
                        _run.DeleteValue(keyName);
                }
            }
            finally
            {
                _reg.Close();
            }
        }

使用代码:

image

image

代码效果:

image