通过文件对话框打开可执行文件,这是得到错误-为什么
本文关键字:错误 为什么 文件 对话框 可执行文件 | 更新日期: 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
});