Как выполнить несколько пакетных команд внутри проекта форм C # - PullRequest
0 голосов
/ 09 ноября 2018

Итак, я хочу запустить кучу разных пакетных команд, которые делают разные вещи. В настоящее время мое программное обеспечение работает, запустив файл .bat, который входит в состав программного обеспечения, но я хочу просто удалить синтаксис из файла .bat и интегрировать его в свое программное обеспечение, чтобы при нажатии кнопки он запускал код напрямую и не запускался файл .bat.

Проблема в том, как мне запустить несколько пакетных команд, не только это, но и дождаться окончания выполнения каждой команды, как это делает пакетная команда? В целом, я хочу выполнить пакетные команды, такие как остановка служб, удаление файлов реестра, удаление папок и программного обеспечения. PS: это приложение C # Forms (поэтому я нажимаю одну кнопку, и все это выполняется)

В настоящее время у меня есть: с примерами

var proc1 = new ProcessStartInfo();
string stopservices = 

    "net stop \"serviceexample1\"" +
    "net stop \"serviceexample2\""; 

string deleteregistry = 
"REG ADD HKEY_LOCAL_MACHINE\\SYSTEM\\EXAMPLE\\.. / t REG_DWORD / v Start / d 0x00000004 / f" +

"rem REG ADD HKEY_LOCAL_MACHINE\\SYSTEM\\EXAMPLE\\.. /t REG_SZ /v Start /d 5 /f";

string deletesoftware = 
"MsiExec.exe /X{EXAMPLESOFTWARE} /quiet" + 
"MsiExec.exe /X{EXAMPLESOFTWARE} /quiet";

string removedirectories = 
"rmdir /s /q C:\\Program Files\\EXAMPLE" +
"rmdir /s /q C:\\Program Files(x86)\\EXAMPLE";

proc1.UseShellExecute = true;

proc1.WorkingDirectory = @"C:\Windows\System32";

proc1.FileName = @"C:\Windows\System32\cmd.exe";
proc1.Verb = "runas";

proc1.Arguments = "/c " + stopservices + deleteregistry + deletesoftware + removedirectories;


proc1.WindowStyle = ProcessWindowStyle.Normal;
System.Diagnostics.Process processwait = System.Diagnostics.Process.Start(proc1);

while (!processwait.HasExited && processwait.Responding)
{
    System.Threading.Thread.Sleep(100);
}

Я пытался посмотреть в интернете, как запускать пакетный код напрямую из c #, и единственный способ найти это - использовать строку. Но я не думаю, что будет ждать окончания каждой команды, чтобы начать следующую, потому что строка - это просто строка текста, поэтому она будет принимать все сразу.

Я также хочу убедиться, что после успешного выполнения кода командная строка будет оставаться до тех пор, пока я не закрою ее (например, пауза в пакете).

Извините, если это простой вопрос, я студент с менее чем полугодовым опытом в c #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...