Запустите подпроцесс в другой папке

У меня в приложении wpf есть кнопка, которая запускает 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, можно было запустить в другой папке.

1 ответ

Решение

Если вы установите UseShellExecute При значении false рабочий каталог будет каталогом для нового процесса, как сказано в документе здесь.

Другие вопросы по тегам