2017-02-28 10 views
2

맨손으로 Win32Api를 사용하고 있습니다. 높은 권한으로 앱을 실행해야하며 앱에 매니페스트가 없습니다. 따라서 유일한 방법은 ShellExecuteExrunAs 동사와 함께 사용하는 것입니다. 그것은 작동하지만 stdout 프로세스를 읽어야합니다. CreateProcess으로 나는 STARTUPINFO을 처리 프로세스 stdout에 사용할 수 있습니다.ShellExecute에 대한 프로세스 stdout 리디렉션 (또는 다른 방법으로 상승 및 리디렉션)

그러나 ShellExecuteEx에는 이러한 API가 없습니다. 그럼 어떻게 을 표준 출력으로 리디렉션 할 수 있습니까?

+0

리디렉션을 위해 승격하려면 ShellExecute를 호출하고 리디렉션을 수행하려면 CreateProcess를 호출하십시오. –

+0

또한 내 매니페스트에 requireAdministrator를 추가하려고 시도했지만 노란색 경고를 방지하기 위해 서명이 필요합니다. – user996142

+0

그럼 코드 서명 인증서를 얻으십시오. 어렵지 않다. –

답변

1

이것은 불가능합니다. stdout을 읽으려면 CreateProcess가 필요합니다. 그러나 CreateProcess는 다른 프로세스를 상승시킬 수 없습니다 ...

가능하면 상승 된 자신 만의 프로세스를 생성하십시오. 이 프로세스는 표준 출력을 캡처 할 수 있습니다. 일부 IPC를 사용하여이 프로세스와 통신하여 표준 출력을 가져옵니다.

또는 간단한 파이프 리디렉션을 사용하십시오.

이 질문은 이미 질문되었고 대답 duplicate to입니다. 도 참조하십시오. question about elevating.

+1

"* CreateProcess는 다른 프로세스를 시작할 수 없습니다 * * - 사실이지만 ['CreateProcessElevated()'] (https://www.codeproject.com/Articles/19165/Vista-UAC-The-Definitive-Guide) can . –