2010-02-09 6 views
2

상승 된 프로세스에서 상승되지 않은 방식으로 프로세스를 시작하는 방법이 있습니까? 내 설정이 상승 된 상태로 완료되면 최종 응용 프로그램이 시작됩니다. 설정이 높아 지므로 주 프로세스가 향상되어 바람직하지 않습니다. 이것에 가장 좋은 해결책은 무엇입니까?상승 된 프로세스에서 정상적으로 프로세스 실행

+0

이것은 http://stackoverflow.com/questions/2206646/create-a-process-with-ordinary-rights-from-an-administrator-process의 복제본입니다. –

답변

2

Vista/Win7에는 CreateProcessAsUser()를 호출해야하는 권한이없는 사용자 토큰을 얻기위한 API가없는 것 같습니다. 내가 찾은 유일한 솔루션은 작업 스케줄러를 사용하여 프로그램을 시작하는 것입니다. 그건 아주 실용적이지 않습니다.

마음에 점프하는 쉬운 해결책은 작은 비 - 상승 된 헬퍼 프로세스를 사용하는 것입니다. 그런 다음 승격 된 설정 프로세스를 시작하고 승격 된 설정 프로세스를 시작하기위한 확인을 기다릴 수 있습니다. 핸드 셰이크는 명명 된 뮤텍스를 사용하여이를 수행하기에 충분히 간단합니다.

0

해킹하지 않고이 작업을 수행 할 수있는 유일한 방법은

인스턴스 A는에서 ShellExecute와 RUNAS 동사와 인스턴스 B를 시작합니다 (같은 .exe로 구현 될 수있다) 두 프로세스를하는 것입니다. B는 "완료 페이지"에서 앱을 시작할 때 설치 프로세스를 시작하여 프로세스 간 통신 (RPC, 공유 메모리 + 이벤트 등)의 일부 형식을 사용하여 프로세스를 시작하기 위해 프로세스를 시작합니다.

0

쉘이 실행되지 않는 상황 (예 : 일부 터미널 서비스 응용 프로그램 전용 설정 등)에 대해서는 신경 쓰지 않아도 좋은 방법입니다.

http://brandonlive.com/2008/04/27/getting-the-shell-to-run-an-application-for-you-part-2-how/

그것은 사용자의 정상적인 컨텍스트에서 실행해야 Explorer.exe에 대한 인터페이스를 가져옵니다, 그 대신에 명령을 실행하는 탐색기를 요청합니다. 이것은 단순하고 문서화 된 COM 인터페이스를 사용하고 프로세스 토큰이나 코드/DLL 주입을 사용하지 않고도 수행 할 수 있습니다.

관련 문제