Запустите подпроцесс в другой папке - PullRequest
0 голосов
/ 20 января 2019

У меня есть кнопка в моем приложении 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 Ответ

0 голосов
/ 20 января 2019

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

...