.NET Process.Start默认目录?

我正在从C# .NET控制台应用程序中启动Java应用程序。 它适用于Java应用程序不关心“默认”目录的情况,但对于仅search当前目录中的支持文件的Java应用程序而言失败。

是否有可以设置stream程参数来指定启动进程的默认目录?

是! ProcessStartInfo有一个名为WorkingDirectory的属性,只需使用:

... using System.Diagnostics; ... var startInfo = new ProcessStartInfo(); startInfo.WorkingDirectory = // working directory // set additional properties Process proc = Process.Start(startInfo); 

使用ProcessStartInfo.WorkingDirectory属性在启动过程之前对其进行设置。 如果该属性未设置,则默认的工作目录是%SYSTEMROOT%\ system32。

您可以使用以下命令确定%SYSTEMROOT%的值:

 string _systemRoot = Environment.GetEnvironmentVariable("SYSTEMROOT"); 

这里是一些示例代码,打开Notepad.exe的工作目录%ProgramFiles%:

 ... using System.Diagnostics; ... ProcessStartInfo _processStartInfo = new ProcessStartInfo(); _processStartInfo.WorkingDirectory = @"%ProgramFiles%"; _processStartInfo.FileName = @"Notepad.exe"; _processStartInfo.Arguments = "test.txt"; _processStartInfo.CreateNoWindow = true; Process myProcess = Process.Start(_processStartInfo); 

还有一个环境variables,用于控制您可以直接通过Environment.CurrentDirectory属性访问的stream程的当前工作目录。

使用ProcessStartInfo.WorkingDirectory属性。

文档在这里 。

Process.Start方法有一个重载,它接受ProcessStartInfo的一个实例。 这个类有一个名为“WorkingDirectory”的属性。

将该属性设置为要使用的文件夹,并使其在正确的文件夹中启动。

使用ProcessStartInfo类并将值分配给WorkingDirectory属性。

只是一个笔记后,我试图实现这一目标。 如果将“UseShellExecute”设置为false,那么设置WorkingDirectory值不起作用。