在系统启动时启动WPF应用程序时出错

时间:2020-09-23 14:00:38

标签: c# wpf .net-core visual-studio-2019

我有一个WPF应用程序,如果我启动计算机,我想自动启动它。

我有一个窗口,用户可以在其中配置应用程序的某些设置,其中一个可能的配置选项是一个复选框,该复选框允许用户关闭或启用应用程序以在系统启动时自动启动。

这是我根据注册表中用户的选择设置或删除注册表中值的方法:

try
        {
            var currentAssembly = Assembly.GetExecutingAssembly();
            var rkApp = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);

            if (settingsViewModel.AutostartEnabled)
            {
                rkApp.SetValue(currentAssembly.GetName().Name, currentAssembly.Location);
            }
            else
            {
                rkApp.DeleteValue(currentAssembly.GetName().Name, false);
            }
        }
        catch (Exception exception)
        {
        }

我的问题是,即使应用程序已注册并且也可以在任务管理器的“自动启动”部分中看到,但每次重新启动计算机以检查应用程序是否启动时,都会出现以下错误:

“您正在尝试打开应用程序扩展(.dll)类型的文件”

那么我在做什么错了?有什么办法可以避免或修复此错误?我已经尝试将应用程序清单文件添加到我的项目中,以始终以管理员身份启动我的应用程序。但这似乎也不起作用。

我将不胜感激。

1 个答案:

答案 0 :(得分:2)

尝试使用System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName代替currentAssembly.Location

这应该为您提供正在运行的可执行文件的路径。 Assembly.GetEntryAssembly不会。

相关问题