C\#CMD 명령 을 실행 하고 결 과 를 되 돌려 주 는 동작 방식
나중에 생각해 보 니 이것 은 불가능 합 니 다.마지막 으로 여러 가지 분석 을 통 해 소프트웨어 에서 ARP 를 제거 하 는 작업 은 Kernel.dll 의 WinExec 를 호출 하여 이 루어 진 것 입 니 다.이 함 수 는 호출 이 성공 하면 되 돌아 가 고 호출 된 프로그램 이 실 행 될 때 까지 기다 리 지 않 습 니 다.
그래서 어떤 반응 이 둔 한 컴퓨터 에 서 는 ARP,Ping 을 제거 하고 ARP 를 조회 하 는 순서 가 있 으 면 Ping 이 끝 난 후에 ARP 표 가 삭제 되 어 ARP 항목 을 찾 지 못 할 수도 있 습 니 다.
인터넷 에서 C\#호출 프로그램 을 조회 하고 프로그램 이 실 행 될 때 까지 기 다 렸 다가 돌아 오 는 실현 방법 은 다음 과 같다.
1.도입
using System.Diagnostics;
2.실행 CMD 만 들 기
Process CmdProcess = new Process();
CmdProcess.StartInfo.FileName = "cmd.exe";
3.설정 개발 방식 입 출력 오류
CmdProcess.StartInfo.CreateNoWindow = true; //
CmdProcess.StartInfo.UseShellExecute = false; // shell
CmdProcess.StartInfo.RedirectStandardInput = true; //
CmdProcess.StartInfo.RedirectStandardOutput = true; //
CmdProcess.StartInfo.RedirectStandardError = true; //
4.cmd 를 실행 하고 반환 값 가 져 오기방법 1
CmdProcess.StartInfo.Arguments = "/c " + "=====cmd ======";//“/C”
CmdProcess.Start();//
CmdProcess.StandardOutput.ReadToEnd();//
CmdProcess.WaitForExit();//
CmdProcess.Close();//
방법 2
CmdProcess.StandardInput.WriteLine(str + "&exit"); // cmd
CmdProcess.StandardInput.AutoFlush = true; //
CmdProcess.Start();//
CmdProcess.StandardOutput.ReadToEnd();//
CmdProcess.WaitForExit();//
CmdProcess.Close();//
5.출력 반환 값우선 도입
using System.IO;
StreamReader sr =CmdProcess.StandardOutput;//
string line = "";
int num = 1;
while ((line=sr.ReadLine())!=null)
{
if(line!="")
{
Console.WriteLine(line + " " + num++);
}
}
6.Process 의 HasExited 속성
//
CmdProcess.WaitForExit();
// true( ,HasExited true)
falg = CmdProcess.HasExited;
추가:C\#동적 호출 exe 실행 가능 한 프로그램 및 반환 값코드 보 세 요~
static void Main(string[] args)
{
object output;
try
{
using (Process p = new Process())
{
p.StartInfo.FileName = @"ConsoleApp2.exe";//
p.StartInfo.Arguments = "";// , , ""
p.StartInfo.UseShellExecute = false;// shell
p.StartInfo.CreateNoWindow = true;//
p.StartInfo.RedirectStandardOutput = true;//
p.StartInfo.RedirectStandardInput = true; //
p.StartInfo.RedirectStandardError = true; //
p.Start();
p.WaitForExit();
// 0
if (p.ExitCode != 0)
{
output = p.StandardError.ReadToEnd();
output = output.ToString().Replace(System.Environment.NewLine, string.Empty);
output = output.ToString().Replace("
", string.Empty);
throw new Exception(output.ToString());
}
else
{
output = p.StandardOutput.ReadToEnd();
}
}
Console.WriteLine(output);
}
catch (Exception ee)
{
Console.WriteLine(ee.Message);
}
Console.ReadKey();
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.