2014-04-17 2 views
1
public void ProcessStartAsAdmin(string command) 
    { 
     Process myProcess = new Process(); 
     myProcess.StartInfo.FileName = @"C:\application.EXE"; 
     myProcess.StartInfo.Verb = @"runas"; 
     myProcess.StartInfo.Arguments = command; 
     myProcess.Start(); 
    } 

Dos 상자가 매우 빨리 닫히고 오류가 있는지 또는 성공적으로 완료되었는지 알 수 없습니다. 수동으로 닫을 때까지 창을 활성 상태로 유지할 수 있습니까?프로세스. 창 닫기를 지연시키는 방법으로 시작 하시겠습니까?

+0

프로세스가 종료 될 때까지 기다려야합니까, 아니면 상관하지 않습니까? – jensendp

+0

Temp 디렉터리에 쓰는 대신 .cmd 파일을 사용할 수 있습니다. 두 줄 만 있으면 두 번째 줄이 PAUSE 일 수 있습니다. 또는 시간 제한을 원하면 선택하십시오. –

+0

"application.exe"가 귀하의 응용 프로그램 인 경우 왜 잠을 자지 않으십니까? – Kilazur

답변

4

응용 프로그램을 실행하는 대신 새 셸 (cmd.exe)을 시작하고이 응용 프로그램을 실행하는 명령을 전달하여 해당 셸에 응용 프로그램을 실행하게하십시오. 그런 다음 "exit"명령을 사용할 때마다 쉘을 종료 할 수 있습니다.

다른 유사한 해결책은이 명령을 실행 한 배치 스크립트를 작성한 다음 사용자 입력을 위해 일시 ​​중지하여 닫으라는 것입니다. 그런 다음 프로그램은 응용 프로그램 대신 직접 해당 스크립트를 실행합니다.

다른 옵션은 표준 출력을 콘솔로 인쇄하는 대신 응용 프로그램으로 리디렉션하는 것입니다. 프로그램 실행이 끝나면 출력물로 원하는대로 무엇이든 할 수 있습니다.

+0

내 winform에서 암호를 가져 와서 명령 프롬프트로 전달할 수 있어야하므로 bat 스크립트가 작동하지 않습니다. 내 쉘을 어떻게 만듭니 까? 관리자 권한으로 명령을 실행할 수 있습니까? –

+0

@softwareisfun 원하는 경우 입력을받는 스크립트를 작성할 수 있습니다. 내가 대답에서 말했듯이 Windows 셸의 실행 파일은 cmd.exe이며, 단지 *의 인스턴스를 시작하면 * 이제는 자신의 셸을 실행 중입니다. 그런 다음 표준 입력을 통해 입력을 전달할 수 있습니다. – Servy

+0

"표준 입력을 통한 입력 전달"이란 의미의 샘플을 보여줄 수 있습니까? –

관련 문제