Я пытаюсь скопировать выходные данные из программы, заканчивающейся приглашением CMD, в буфер обмена Windows.Копирование вывода CMD в буфер обмена
private void button1_Click(object sender, EventArgs e)
{
/*Relevant Code*/
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = String.Format("/k cd {0} && backdoor -rt -on -s{1} -p{2}", backdoorDir, pSN, sPPC);
p.Start();
p.WaitForExit();
string result = p.StandardOutput.ReadToEnd();
System.Windows.Forms.Clipboard.SetText(result);
}
Если бы я был ввести это прямо в CMD, это будет выглядеть следующим образом:
Первой команда (изменить каталог):
cd C:\users\chris\appdata\roaming\backdoor
Второй команда (запускает бэкдор, инструмент CMD . Аргументы следуют).
backdoor -rt -on -sCCDXE -p14453
И, делая это через CMD, я получаю этот результат:
The backdoor password is: 34765
C:\users\chris\appdata\roaming\backdoor>
Однако, при запуске мой C# код, это единственное, что будет добавлен в мой буфер обмена:
C:\users\chris\appdata\roaming\backdoor>
Почему это не захватывая «бэкдор пароль: 34765» Это как p.StandardOutput.ReadToEnd()
не читает все.
Try используя 'p.StartInfo.RedirectStandardError = true' и' p.StandardError.ReadToEnd() 'вместо – Icemanind
Это сделало это ... Спасибо. –