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

        /// <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

你可能感兴趣的:(注册表)