You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#调用含正斜杠命令行参数的外部exe程序闪退问题求助

问题根本原因

你遇到的崩溃是因为未显式设置目标程序的工作目录导致的:

  • 当Process.StartInfo.UseShellExecute = false时,系统默认会将你当前C#程序的运行目录(也就是bin目录)作为新启动进程的工作目录,不会自动切换到GpuTest.exe所在的目录
  • Geeks3D GPU Test运行时需要加载同目录下的依赖DLL、测试用资源文件,读取这些文件时程序默认从当前工作目录查找,而非自身exe文件所在目录
  • 不带参数启动时程序运行的默认逻辑不需要加载额外的依赖资源,因此可以正常运行;传入测试参数后需要加载对应测试项的关联资源,在当前工作目录查找不到就会抛出异常退出

修复方案

给Process.StartInfo.WorkingDirectory显式赋值为GpuTest.exe所在的目录即可,修复后的代码如下:

private void BtnStartStress_Click(object sender, EventArgs e)
{
    string gpuTestDir = @"C:\Users\Computer_User\source\repos\StressTool\GpuTest\";
    Process GpuTest = new Process();            
    GpuTest.StartInfo.FileName = Path.Combine(gpuTestDir, "GpuTest.exe");
    GpuTest.StartInfo.Arguments = "/test=fur";
    GpuTest.StartInfo.UseShellExecute = false;
    GpuTest.StartInfo.CreateNoWindow = false;
    // 显式设置工作目录为GpuTest所在文件夹
    GpuTest.StartInfo.WorkingDirectory = gpuTestDir;
    GpuTest.Start();
}

补充验证点

  • 如果GpuTest的路径是动态读取的,确保提取路径时只取目录部分赋值给WorkingDirectory即可
  • 如果后续需要打包程序,建议将GpuTest的文件夹路径改为相对路径,避免硬编码绝对路径导致部署后出错

内容的提问来源于stack exchange,提问作者Ed Swafford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:36:04