定义用于执行程序的工作目录(C#)

定义用于执行程序的工作目录(C#),c#,.net,windows,C#,.net,Windows,我目前正在尝试从特定文件夹启动一个可执行文件 下面的代码让应用程序崩溃得很奇怪: Process p = new Process(); p.StartInfo.WorkingDirectory = "dump"; p.StartInfo.FileName = s; p.Start(); 我调试了它,它说它找不到要启动的文件,但文件/文件夹确实存在,我的语法错误吗 下面的代码可以工作,但是没有定义工作的directroy,因此它找不到可执行文件 Process.Start(@"dump\", s

我目前正在尝试从特定文件夹启动一个可执行文件

下面的代码让应用程序崩溃得很奇怪:

Process p = new Process();
p.StartInfo.WorkingDirectory = "dump";
p.StartInfo.FileName = s;
p.Start();
我调试了它,它说它找不到要启动的文件,但文件/文件夹确实存在,我的语法错误吗

下面的代码可以工作,但是没有定义工作的directroy,因此它找不到可执行文件

Process.Start(@"dump\", s);

您设置的工作目录(“转储”)是相对于当前工作目录的。您可能需要检查当前的工作目录

您应该能够使用以下代码将工作目录设置为执行程序集目录

string exeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Directory.SetCurrentDirectory(exeDir);

或者,最好不要使用相对路径,将p.StartInfo.WorkingDirectory设置为绝对路径。

如果文件夹不存在,则无法从该文件夹启动可执行文件。您必须将可执行文件复制到此文件夹,然后才能为此可执行文件启动
进程。

正确,我当前的工作目录中有一个转储文件夹。不过,工作目录与启动的可执行文件的位置无关。这是这里的一个重要区别。