C# .NET进程。是否启动默认目录?
我正在从一个C#控制台应用程序内部启动一个Java应用程序。对于Java应用程序不关心“默认”目录是什么的情况,它可以正常工作,但对于只在当前目录中搜索支持文件的Java应用程序,它会失败 是否有可以设置的流程参数来指定启动流程的默认目录?是! ProcessStartInfo有一个名为WorkingDirectory的属性,只需使用:C# .NET进程。是否启动默认目录?,c#,C#,我正在从一个C#控制台应用程序内部启动一个Java应用程序。对于Java应用程序不关心“默认”目录是什么的情况,它可以正常工作,但对于只在当前目录中搜索支持文件的Java应用程序,它会失败 是否有可以设置的流程参数来指定启动流程的默认目录?是! ProcessStartInfo有一个名为WorkingDirectory的属性,只需使用: ... using System.Diagnostics; ... var startInfo = new ProcessStartInfo(); st
...
using System.Diagnostics;
...
var startInfo = new ProcessStartInfo();
startInfo.WorkingDirectory = // working directory
// set additional properties
Process proc = Process.Start(startInfo);
使用ProcessStartInfo.WorkingDirectory属性
Docs.Process.Start方法有一个重载,它接受ProcessStartInfo的一个实例。此类有一个名为“WorkingDirectory”的属性
将该属性设置为要使用的文件夹,并使其能够在正确的文件夹中启动。使用
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);
还有一个环境变量,用于控制进程的当前工作目录,您可以通过属性直接访问该目录。在我尝试实现此功能时,请注意。
如果将“UseShellExecute”设置为false,则设置WorkingDirectory值无效。Nice,我不知道您可以在.WorkingDirectory属性中使用环境变量。宾果,这就是答案——默认目录是SYSTEMROOT+1这并不能回答这个问题。要评论或要求作者澄清,请在他们的帖子下方留下评论-你可以随时在自己的帖子上发表评论,一旦你有足够的评论,你就可以发表评论。即使6年后,关于UseShellExecute的评论也很有帮助。修复了此问题。
工作目录
是否可以是相对路径,如果是,它与当前文件或当前可执行文件的目录有关?我无法让我的程序找到要启动的可执行文件。我已经将工作目录设置为exe的目录(相对于当前文件和当前exe),但它找不到它。