.NET Process.Start默认目录?
时间:2020-03-06 14:32:25 来源:igfitidea点击:
我正在从C.NET控制台应用程序内部启动Java应用程序。对于Java应用程序不在乎"默认"目录是什么情况,但对于仅在当前目录中搜索支持文件的Java应用程序而言,这种方法很好用。
是否可以设置流程参数来指定启动流程的默认目录?
解决方案
是的!
ProcessStartInfo具有一个名为WorkingDirectory的属性,只需使用:
... using System.Diagnostics; ... var startInfo = new ProcessStartInfo(); startInfo.WorkingDirectory = // working directory // set additional properties Process proc = Process.Start(startInfo);
使用ProcessStartInfo.WorkingDirectory属性。
文档在这里。
Process.Start方法具有一个重载,该重载采用ProcessStartInfo的实例。此类具有一个称为" WorkingDirectory"的属性。
将该属性设置为要使用的文件夹,这应该使它在正确的文件夹中启动。
使用" ProcessStartInfo"类,并为" WorkingDirectory"属性分配一个值。
在启动过程之前,请使用ProcessStartInfo.WorkingDirectory属性进行设置。如果未设置该属性,则默认工作目录为%SYSTEMROOT%\ system32.
我们可以使用以下方法确定%SYSTEMROOT%的值:
string _systemRoot = Environment.GetEnvironmentVariable("SYSTEMROOT");
这是一些打开工作目录为%ProgramFiles%的Notepad.exe的示例代码:
... 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);
还有一个Environment变量控制进程的当前工作目录,我们可以通过Environment.CurrentDirectory属性直接访问该目录。