WPF应用开机自启动编程实现

不论是WinForm程序还是WPF程序,实现开机自启动的原理都是向注册表中写值,位置在注册表的“LocalMachine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”目录下。
手动编辑注册表实现应用程序开机自启动请查看下面文章:

[如何让应用程序在开机后自动启动?]


C#程序实现

1.判断注册表键值对是否存在
        private bool IsExistKey(string keyName)
        {
            try
            {
                bool _exist = false;
                RegistryKey local = Registry.LocalMachine;
                RegistryKey runs = local.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 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;
            }
        }
写入/删除注册表键值对
        ///isStart--是否开机自启动
        ///exeName--应用程序名
        ///path--应用程序路径
        private static bool SelfRunning(bool isStart, string exeName, string path)
        {
            try
            {
                RegistryKey local = Registry.LocalMachine;
                RegistryKey key = local.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 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)
            {
                return false;
                //throw;
            }

            return true;
        }
实现开机自启动
namespace KSHServer
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        private static bool IsStart = Convert.ToBoolean(ConfigurationManager.AppSettings["IsStart"]);

        public MainWindow()
        {
            InitializeComponent();

            if (!IsExistKey("ServerApp") && IsStart)
            {
                SelfRunning(IsStart, "ServerApp", @"E:\ServerApp\ServerApp.exe");
            }
            else if (IsExistKey("ServerApp") && !IsStart)
            {
                SelfRunning(!IsStart, "ServerApp", @"E:\ServerApp\ServerApp.exe");
            }
        }

控制是否开机自启动的字段放在了配置文件App.config中,根据需要修改即可(true:开机自启动;false:取消开机自启动)

  <appSettings>
    <!--是否开机自启动-->
    <add key="IsStart" value="true"/>
  </appSettings>

namespace ServerApp
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        private static bool IsStart = Convert.ToBoolean(ConfigurationManager.AppSettings["IsStart"]);

        public MainWindow()
        {
            InitializeComponent();

            if (!IsExistKey("ServerApp") && IsStart)
            {
                SelfRunning(IsStart, "ServerApp", @"E:\ServerApp\ServerApp.exe");
            }
            else if (IsExistKey("ServerApp") && !IsStart)
            {
                SelfRunning(!IsStart, "ServerApp", @"E:\ServerApp\ServerApp.exe");
            }
        }

控制是否开机自启动的字段放在了配置文件App.config中,根据需要修改即可(true:开机自启动;false:取消开机自启动)

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值