2013-07-18 4 views
2

저는 C#과이 포럼 전반에 대해 처음 소개되었지만, 관련해서는 제 질문과 같은 질문을 보지 못했습니다.WaitForExit()은 UAC 또는 보안 경고시 활성화됩니다.

Process.WaitForExit() 메서드를 호출하면 설치 파일 설치가 완료 될 때까지 기다릴 수 있습니다. 그러나이 방법은 UAC를 '프로세스'로 간주하고 UAC에서 확인을 클릭하면 활성화됩니다. 코드가 진행되기 전에 설치 프로세스가 끝날 때까지 기다리는 것이 더 좋은 방법일까요? 아니면 내가 잘못하고있는거야? UAC를 수동으로 비활성화하면 (가능하다면) 프로그래밍 방식으로 완료되지 않는 한 계속 진행됩니다.

편집 : 공정

Process netInstall = Process.Start(filePath + "\\Installer.exe"); 
netInstall.WaitForExit(); 
Console.WriteLine("Installation Finished!"); 

편집 2의 적절한 전화 :

여기에 코드의 일부 내가 MySQL 서버 5.6을 설치하고있어 말한다면 그것은 도움이 될? 보안 경고 외에도 시작하기 전에 일부 창이 닫히고 닫히는 것으로 보입니다. 문안 인사.

+0

? 'netInstall' 프로세스에서 실행 된 실행 파일 대신 UAC를 캡쳐하고 있다고 하시겠습니까? – Shark

+0

코드의'WriteLine' 부분으로 진행하기 전에 설치를 끝내기 위해'netInstall' (설치 프로그램 exe)이 나올 때까지 기다려야합니다. 하지만 어쨌든 설치 프로그램의 UAC에서 확인을 클릭하고 UAC 창이 닫히면'WriteLine'으로 진행됩니다. 그런데 빠른 답장을 보내 주셔서 감사합니다. :) – user2595220

+0

당신은'netInstall'의 인스턴스 공간에서 설치 프로그램을 시작하지 않고 정적으로 시작한다는 것을 알고 있습니까? – Shark

답변

0

코드가 올바르지 않습니다. Process 클래스의 인스턴스를 만들었지 만 정적 메서드 인 Process.Start를 호출하면 Process의 새 인스턴스가 만들어집니다. 상승 된 권한으로 응용 프로그램을 실행

Process netInstall = Process.Start(filePath + "\\Installer.exe"); 
netInstall.WaitForExit(); 
Console.WriteLine("Installation Finished!"); 
+1

정보 주셔서 감사합니다,하지만 여전히'WaitForExit()'에 대한 나의 주요 관심사를 해결하지 못한다. 나는 그 코드로 주 스레드를 업데이트 할 것이다. :) – user2595220

0

을 :

귀하의 코드는 다음과 같이한다

<requestedExecutionLevel level="requireAdministrator"> 

는 또한 BasyStallion 응답을 고려하고 제대로 시작 netInstall 당신이 뭘 하려는지

+0

나는 이미 특권을 높였다. 여전히 보안 경고가 나타나고 닫을 때 여전히 WaitForExit()가 활성화됩니다. – user2595220