0

以下が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);
    }
}

その他: 管理者としてアプリケーションを実行しています。

4

1 に答える 1

5

まず、これがファイルを開くダイアログと関係があるとは思えません

問題は、Kool.exe が、必要なファイルを実行可能ファイル自体から相対的に見つけようとするのではなく、現在の作業ディレクトリにあると想定していることにあると強く思います。

理想的には、Kool.exe をより回復力のあるものに修正する必要がありますが、それが不可能な場合は、起動時に新しいプロセスの作業ディレクトリを設定してください。

string file = openF1.FileName;
string directory = new FileInfo(file).Directory;
Process.Start(new ProcessStartInfo {
    FileName = file,
    WorkingDirectory = directory
});
于 2013-05-23T01:29:23.150 に答える