• 添加程序到开机自动启动


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



  • 相关阅读:
    常见寻找OEP脱壳的方法
    Windows内核原理系列01
    HDU 1025 Constructing Roads In JGShining's Kingdom
    HDU 1024 Max Sum Plus Plus
    HDU 1003 Max Sum
    HDU 1019 Least Common Multiple
    HDU 1018 Big Number
    HDU 1014 Uniform Generator
    HDU 1012 u Calculate e
    HDU 1005 Number Sequence
  • 原文地址:https://www.cnblogs.com/lionmxs/p/13325024.html
Copyright © 2020-2023  润新知