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

时间:2011-07-16 18:17:58

标签: c# .net windows

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

我下面的代码奇怪地崩溃了应用程序:

Process p = new Process();
p.StartInfo.WorkingDirectory = "dump";
p.StartInfo.FileName = s;
p.Start();

我调试了它,它说无法找到要启动的文件,但文件/文件夹defintly存在,我的语法不好?

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

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

2 个答案:

答案 0 :(得分:13)

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

您应该能够使用此代码将工作目录设置为正在执行的程序集目录...

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

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

答案 1 :(得分:0)

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