zoukankan      html  css  js  c++  java
  • 添加程序到开机自动启动

            /// <summary>
            /// 将本程序设为开启自启
            /// </summary>
            /// <param name="onOff">自启开关</param>
            /// <returns></returns>
            public static bool SetMeStart(bool onOff)
            {
                bool isOk = false;
                string appName = Process.GetCurrentProcess().MainModule.ModuleName;
                string appPath = Process.GetCurrentProcess().MainModule.FileName;
                isOk = SetAutoStart(onOff, appName, appPath);
                return isOk;
            }
    
            /// <summary>
            /// 将应用程序设为或不设为开机启动
            /// </summary>
            /// <param name="onOff">自启开关</param>
            /// <param name="appName">应用程序名</param>
            /// <param name="appPath">应用程序完全路径</param>
            public static bool SetAutoStart(bool onOff, string appName, string appPath)
            {
                bool isOk = true;
                //如果从没有设为开机启动设置到要设为开机启动
                if (!IsExistKey(appName) && onOff)
                {
                    isOk = SelfRunning(onOff, appName, @appPath);
                }
                //如果从设为开机启动设置到不要设为开机启动
                else if (IsExistKey(appName) && !onOff)
                {
                    isOk = SelfRunning(onOff, appName, @appPath);
                }
                return isOk;
            }
    
            /// <summary>
            /// 判断注册键值对是否存在,即是否处于开机启动状态
            /// </summary>
            /// <param name="keyName">键值名</param>
            /// <returns></returns>
            private static bool IsExistKey(string keyName)
            {
                try
                {
                    bool _exist = false;
                    RegistryKey local = Registry.LocalMachine;
                    RegistryKey runs = local.OpenSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun", true);
                    if (runs == null)
                    {
                        RegistryKey key2 = local.CreateSubKey("SOFTWARE");
                        RegistryKey key3 = key2.CreateSubKey("Microsoft");
                        RegistryKey key4 = key3.CreateSubKey("Windows");
                        RegistryKey key5 = key4.CreateSubKey("CurrentVersion");
                        RegistryKey key6 = key5.CreateSubKey("Run");
                        runs = key6;
                    }
                    string[] runsName = runs.GetValueNames();
                    foreach (string strName in runsName)
                    {
                        if (strName.ToUpper() == keyName.ToUpper())
                        {
                            _exist = true;
                            return _exist;
                        }
                    }
                    return _exist;
    
                }
                catch
                {
                    return false;
                }
            }
    
            /// <summary>
            /// 写入或删除注册表键值对,即设为开机启动或开机不启动
            /// </summary>
            /// <param name="isStart">是否开机启动</param>
            /// <param name="exeName">应用程序名</param>
            /// <param name="path">应用程序路径带程序名</param>
            /// <returns></returns>
            private static bool SelfRunning(bool isStart, string exeName, string path)
            {
                try
                {
                    RegistryKey local = Registry.LocalMachine;
                    RegistryKey key = local.OpenSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun", true);
                    if (key == null)
                    {
                        local.CreateSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run");
                    }
                    //若开机自启动则添加键值对
                    if (isStart)
                    {
                        key.SetValue(exeName, path);
                        key.Close();
                    }
                    else//否则删除键值对
                    {
                        string[] keyNames = key.GetValueNames();
                        foreach (string keyName in keyNames)
                        {
                            if (keyName.ToUpper() == exeName.ToUpper())
                            {
                                key.DeleteValue(exeName);
                                key.Close();
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    string ss = ex.Message;
                    return false;
                    //throw;
                }
    
                return true;
            }


    调用

    private void button2_Click(object sender, EventArgs e)
    {
    string urlst = "";


    urlst = ip1.Text;


    System.Diagnostics.Process.Start(urlst);

    
    

    string keyname = "A8";
    string apppath = @"C:Program Files (x86)MJDESIGNA8setWindowsFormsApplication2.exe";

    
    

    bool isyes = false;

    
    

    if (checkBox1.Checked== true)
    {
    isyes = true;
    }
    if (checkBox1.Checked == false)
    {
    isyes = false;
    }
    SetAutoStart(isyes, keyname, apppath);
    }



  • 相关阅读:
    忽略大小写的RegularExpressionValidator
    Outlook 2010 “加载项执行错误。调用“Microsoft Exchange 加载项”加载项时,在“IDTExtensibility2”接口回调“OnConnection”期间,Outlook 出现故障”问题
    选择排序——算法系列
    代码杂记32
    数据库系统原理
    C#中的委托与事件
    C#多线程
    冒泡排序——算法系列
    快速排序——算法系列
    递归算法——猴子吃桃
  • 原文地址:https://www.cnblogs.com/lionmxs/p/13325024.html
Copyright © 2011-2022 走看看