通过文件对话框打开可执行文件,这是得到错误-为什么

本文关键字:错误 为什么 文件 对话框 可执行文件 | 更新日期: 2023-09-27 18:15:00

有人知道为什么下面会打开Kool.exe,但是Kool.exe不能加载其所有文件,除非我将当前项目debug/project.exe放入与它试图打开的Kool.exe相同的文件夹中?

private void button1_Click(object sender, EventArgs e)
{
    OpenFileDialog openF1 = new OpenFileDialog();
    openF1.InitialDirectory = @"C:'";
    openF1.Title = "Browse for Kool.exe...";
    openF1.CheckFileExists = true;
    openF1.CheckPathExists = true;
    openF1.DefaultExt = "exe";
    openF1.FileName = "Kool";
    openF1.Filter = "Kool (*.exe)|*.exe|All Files(*.*)|*.*";
    openF1.FilterIndex = 2;
    openF1.RestoreDirectory = true;
    openF1.ReadOnlyChecked = true;
    openF1.ShowReadOnly = true;
    if (openF1.ShowDialog() == DialogResult.OK)
    {
        Process[] pname = Process.GetProcessesByName(openF1.FileName);
        if (pname.Length == 0)
        {
            Process.Start(openF1.FileName);
            this.Close();
        }
        else
        {
            MessageBox.Show("Kool is already running.", "Patch: Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
        }
    }
    else
    {
        MessageBox.Show("Cannot find Kool install", "Patch: Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
    }
}

其他:我以管理员身份运行应用程序

通过文件对话框打开可执行文件,这是得到错误-为什么

首先,我怀疑这与文件打开对话框有任何关系。

我强烈怀疑问题是Kool.exe假设它需要的文件在当前工作目录中,而不是试图相对于可执行文件本身找到它们。

理想情况下,你应该修复Kool.exe更有弹性-但如果这是不可能的,只要设置新进程的工作目录,当你启动它。

string file = openF1.FileName;
string directory = new FileInfo(file).Directory;
Process.Start(new ProcessStartInfo {
    FileName = file,
    WorkingDirectory = directory
});