使用快捷方式时程序启动不正确

Program launching incorrectly when using a shortcut

当我尝试使用快捷方式或 Process.Start 启动我的程序时,运行 我的 if 说我的文件丢失并且它没有启动 WPF windows。下图是我尝试通过快捷方式启动的/process.start

if (!File.Exists(Environment.CurrentDirectory + "\Multimanager.dll") && !File.Exists(Environment.CurrentDirectory + "\Multimanager.dll"))
{
    MessageBox.Show("You are missing the 'Multimanager.dll' and the 'Updater.dll'. Please re-run the MMInstaller.exe to re-download these files", "Missing files", MessageBoxButton.OK, MessageBoxImage.Warning);
    Application.Current.Shutdown();
}
else if (!File.Exists(Environment.CurrentDirectory + "\Multimanager.dll"))
{
    MessageBox.Show("You are missing the 'Multimanager.dll'. Please re-run the MMInstaller.exe to re-download these files", "Missing files", MessageBoxButton.OK, MessageBoxImage.Warning);
    Application.Current.Shutdown();
}
else if (!File.Exists(Environment.CurrentDirectory + "\Updater.dll"))
{
    MessageBox.Show("You are missing the 'Updater.dll'. Please re-run the MMInstaller.exe to re-download these files", "Missing files", MessageBoxButton.OK, MessageBoxImage.Warning);
    Application.Current.Shutdown();
}
else
{
    string MMV = Multimanager.MMShared.version().ToString();
    string UV = Updater.UShared.version().ToString();

    var u = new Updater.UpdaterWPF(MMV);
    u.ShowDialog();

    var mm = new Multimanager.UUpdater(UV);
    mm.Show();
    u.Close();
}

编辑:如果我使用 .exe 手动启动程序,它可以正常打开(哦,如果它是 64 位应用程序,则 IDK 与它有任何关系)

编辑:这是我的 process.start Process.Start(path.Text + "\Multimanager Launcher.exe"); 而 path.text 是屏幕截图中的目录。 快捷方式是使用本网站上的代码创建的 here

不要使用 Environment.CurrentDirectory 来处理 DLL。这是一个可怕的安全漏洞。您的应用程序正在当前目录而不是应用程序目录中搜索 DLL。希望不是从当前目录加载它们,但这是需要非常小心的事情。

要获取应用程序目录,您可以改用AppDomain.CurrentDomain.BaseDirectory。这不会根据(用户可配置!)当前目录而改变。