아래 코드는 평소에는 정상동작을 합니다.
즉, 콘솔 창에서 "DIR /W" 명령을 내리고 그 결과를 출력합니다.
하지만 Windows 11 Pro 환경에서 부팅을 완료하자 마자 실행하면 마지막 라인에 멈춰 있습니다.
즉 결과를 얻어오지 못하는 거죠ㅠㅠ
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
try
{
cmd.Start();
}
catch
{
return false;
}
cmd.StandardInput.WriteLine("dir /w");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd()); 이유는 모르겠습니다.
한참 고생하다가 결국 우회한 방법은...
상기 코드를 수행하기 전에,
실행을 해도 아무런 변화나 해가 없는 코드를 한번 실행하세요. 즉, 아래와 같이요...ㅠㅠ
Process preCmd = new Process();
preCmd.StartInfo.FileName = "cmd.exe";
preCmd.StartInfo.RedirectStandardInput = true;
preCmd.StartInfo.CreateNoWindow = true;
preCmd.StartInfo.UseShellExecute = false;
try
{
preCmd.Start();
}
catch
{
return false;
}
preCmd.StandardInput.WriteLine("dir");
preCmd.StandardInput.Flush();
preCmd.StandardInput.Close();
Thread.Sleep(6000); // 잠시 대기해 봄.
<원래 코드 실행>
그리고 원래의 코드를 실행하면 정상 동작을 하더라구요...ㅠㅠ
콘솔창이 Tab 기능을 가지면서 생긴 버그일까요?
혹시 이유를 아는 분이 계시면 댓글을 좀 부탁 드리겠습니다 :)