c# - 正确设置进程工作目录

标签 c# process

设置进程时,似乎我没有以正确的方式使用该变量 WorkingDirectory。我收到错误(有一个问题)

ApplicationName='Test.exe', CommandLine='/d=1', CurrentDirectory='C:\Users\mb\Desktop\Integration\Tests\dailyTest\dailyTest\bin\Debug\Stress', Native error= The system cannot find the file specified.

但是,在Stress文件夹下,有一个Test.exe...,所以我实在不明白这是什么意思。

为什么会失败,如何解决?


代码如下(注意,为了更好理解,我用直接的字符串内容替换了变量)。

Process proc = new System.Diagnostics.Process();

proc.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory() + "\\" + "Stress");
proc.StartInfo.FileName = "Test.exe";
proc.StartInfo.Arguments = "/d=1";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.Start ();
proc.WaitForExit();

return proc.ExitCode;

我知道 WorkingDirectory 受 UseShellExecute 的影响,但我尊重这一点。

最佳答案

设置后尝试添加 Directory.Exists( proc.StartInfo.WorkingDirectory )Test.exe 是否存在于该目录中?

也试试:

string filename = Path.Combine( Directory.GetCurrentDirectory(), "Stress", "test.exe" );

check File.Exists( filename );

也许使用 filename 作为 proc.StartInfo.FileName

对于您的工作目录,请使用:Path.Combine( Directory.GetCurrentDirectory(), "Stress")

为了澄清,我会说使用:

proc.StartInfo.WorkingDirectory = Path.Combine( Directory.GetCurrentDirectory(),  "Stress");
proc.StartInfo.FileName = Path.Combine( Directory.GetCurrentDirectory(),  "Stress", "Test.exe" );
bool folderExists = Directory.Exists( proc.StartInfo.WorkingDirectory );
bool fileExists = File.Exists( proc.StartInfo.FileName );

您可以调试查看文件和文件夹是否存在。

关于c# - 正确设置进程工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30483513/

相关文章:

c - 如何正确使用 fork() 和 exec()

process - 帮我定义流程和程序?

python - 获取进程启动的工作目录

c# - 使用 Roslyn-CTP 的单个右括号的奇怪解析行为

C# SQL - 表列枚举和 JOIN

c# - Reflection.Emit 创建通用继承方法

c# - 更改属性时遇到问题

java - 缓冲读取器拒绝输出数据

c# - 如何在 C# 中创建通用列表/模板列表

c++ - 使用 api "CreateFileMapping"创建后是否可以增加共享内存大小?