dumpcap.exe가 데이터를 캡처 할 수있는 지원되는 인터페이스를 나열하려고합니다.빈 문자열을 반환하는 C#의 프로세스 표준 출력
내가 실행할 명령은 "dumpcap.exe -D"내 시스템에서
, 그것은으로 출력을 제공입니다 - 나는에 의해 위의 출력을 읽을려고
1. \Device\NPF_{1B627AA8-2A1D-4C90-B560-517CF71B33A5} (Intel(R) 825
Network Connection)
2. \Device\NPF_{7ECC4D31-DF17-49AB-960D-628D0580F3C6} (Microsoft)
WPF C# 응용 프로그램에서 동일한 명령을 실행합니다. 나는 다음과 같은 코드를 가지고있다. -
Process proc = new Process();
//set the path to dumpcap.exe (verified by me)
proc.StartInfo.FileName = "..\\..\\..\\..\\..\\Dumpcap\\dumpcap.exe";
StringBuilder dumpcapArgs = new StringBuilder();
dumpcapArgs.Append("-D");
proc.StartInfo.Arguments = dumpcapArgs.ToString();
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
while (!proc.StandardOutput.EndOfStream)
{
string line = proc.StandardOutput.ReadLine();
MessageBox.Show(line);
}
내가 디버깅 할 때 실행은 내 while 루프에 전혀 들어 가지 않는다. StandardOutput은 이미 스트림의 끝 부분에 있습니다. StandardOutput 기본 스트림 클래스 멤버를 더 자세히 살펴보면 길이, 위치 등에서 많은 System.NotSupportedExceptions를 볼 수 있습니다.
위 코드가 잘못된 것은 무엇입니까?
나는 다음과 같은 코드로 다른 샘플 C# 콘솔 응용 프로그램을 시도
빠른 관찰 :
Process proc = new Process();
proc.StartInfo.FileName = "C:\\Karan\\Dumpcap\\dumpcap.exe";
proc.StartInfo.Arguments = "-D";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
Console.WriteLine(proc.StandardOutput.ReadToEnd());
proc.WaitForExit();
이 예상대로 출력을 인쇄!
그러나 문자열 변수에서 표준 출력을 읽으려고하면 빈 문자열이 표시됩니다.
는 예를 들어,이 나에게 빈 문자열을 반환합니다 : -
Process proc = new Process();
proc.StartInfo.FileName = "C:\\Karan\\Dumpcap\\dumpcap.exe";
proc.StartInfo.Arguments = "-D";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
String output = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
미안 해요, 난 그 라인을 놓친 : 나는 보통 다른 방식으로 출력의 리디렉션을 수행하기 때문에이 트릭을 할 것입니다 경우
는 잘 모르겠어요. 내 잘못이야. 업데이트 됨. – Karan