在不同的文件夹中启动子进程

Start subprocess in different folder

我的 wpf 应用程序中有一个按钮,它会在执行另一组命令之前启动 timeout cmd。问题是我需要在不同的文件夹中生成该进程,因此我可以删除我的 WPF 应用程序所在的文件夹。

我可以删除上述文件夹中的所有文件,包括 wpf 应用程序,但文件夹本身仍处于锁定状态,因为隐藏的 cmd 进程在其中产生。

我试过添加工作目录,但似乎不起作用。仍然在同一个地方产生进程。

public void HiddenProcess(string processName, string commandLineArgs)
{
    Process process = new Process();
    process.StartInfo.FileName = processName;
    process.StartInfo.Arguments = commandLineArgs;
    process.StartInfo.CreateNoWindow = false;
    process.StartInfo.ErrorDialog = false;
    process.StartInfo.UseShellExecute = true;
    process.StartInfo.WorkingDirectory = @"%Documents%";
    process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    process.Start();
}

private void Rtvp_Click(object sender, RoutedEventArgs e)
{
    HiddenProcess("cmd", "/c mkdir %USERPROFILE%\Documents\tasks");
    HiddenProcess("cmd", "/c attrib +h %USERPROFILE%\Documents\tasks /s /d");
    HiddenProcess("cmd", "/c timeout -t 600 /nobreak&" + somecommand)
}

我想知道是否可以做任何事情,以便可以在不同的文件夹中启动使用 HiddeProcess 方法启动的任何进程。

如果将 UseShellExecute 设置为 false,工作目录将成为新进程的目录,如文档 here.

中所述