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

我目前正试图从一个特定的文件夹中启动一个可执行文件。

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

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

我debugging它,它是说它无法find文件启动,但文件/文件夹defintly存在,是我的语法不好?

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

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

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

你应该能够使用这个代码将工作目录设置为正在执行的程序集目录…

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

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

如果不在那里,你不能从一个文件夹启动一个可执行文件。 您必须将您的可执行文件复制到此文件夹,并且只有在此之后,才能启动此可执行文件的Process