상승 된 프로세스에서 상승되지 않은 방식으로 프로세스를 시작하는 방법이 있습니까? 내 설정이 상승 된 상태로 완료되면 최종 응용 프로그램이 시작됩니다. 설정이 높아 지므로 주 프로세스가 향상되어 바람직하지 않습니다. 이것에 가장 좋은 해결책은 무엇입니까?상승 된 프로세스에서 정상적으로 프로세스 실행
답변
Vista/Win7에는 CreateProcessAsUser()를 호출해야하는 권한이없는 사용자 토큰을 얻기위한 API가없는 것 같습니다. 내가 찾은 유일한 솔루션은 작업 스케줄러를 사용하여 프로그램을 시작하는 것입니다. 그건 아주 실용적이지 않습니다.
마음에 점프하는 쉬운 해결책은 작은 비 - 상승 된 헬퍼 프로세스를 사용하는 것입니다. 그런 다음 승격 된 설정 프로세스를 시작하고 승격 된 설정 프로세스를 시작하기위한 확인을 기다릴 수 있습니다. 핸드 셰이크는 명명 된 뮤텍스를 사용하여이를 수행하기에 충분히 간단합니다.
해킹하지 않고이 작업을 수행 할 수있는 유일한 방법은
인스턴스 A는에서 ShellExecute와 RUNAS 동사와 인스턴스 B를 시작합니다 (같은 .exe로 구현 될 수있다) 두 프로세스를하는 것입니다. B는 "완료 페이지"에서 앱을 시작할 때 설치 프로세스를 시작하여 프로세스 간 통신 (RPC, 공유 메모리 + 이벤트 등)의 일부 형식을 사용하여 프로세스를 시작하기 위해 프로세스를 시작합니다.
쉘이 실행되지 않는 상황 (예 : 일부 터미널 서비스 응용 프로그램 전용 설정 등)에 대해서는 신경 쓰지 않아도 좋은 방법입니다.
http://brandonlive.com/2008/04/27/getting-the-shell-to-run-an-application-for-you-part-2-how/
그것은 사용자의 정상적인 컨텍스트에서 실행해야 Explorer.exe에 대한 인터페이스를 가져옵니다, 그 대신에 명령을 실행하는 탐색기를 요청합니다. 이것은 단순하고 문서화 된 COM 인터페이스를 사용하고 프로세스 토큰이나 코드/DLL 주입을 사용하지 않고도 수행 할 수 있습니다.
- 1. 프로그래밍 방식으로 프로세스 권한 상승?
- 2. Objective C의 권한 상승 된 AppleScript 실행
- 3. 상승 또는 상승하지 않은 모드로 프로세스 시작
- 4. apache.commons.exec - 실행 된 프로세스에서 예외를 throw하지 않습니까?
- 5. 다른 C 프로세스에서 새 독립 프로세스 만들기
- 6. 루트가 아닌 프로세스에서 jailkit 실행
- 7. REST로 비즈니스 프로세스 실행
- 8. Runtime.getRuntime(). exec 프로세스에서 프로세스 그룹 변경
- 9. 스폰 된 프로세스에서 예외 잡기
- 10. 웹 서버에서 실행 프로세스/실행 파일 실행
- 11. VB6에 대한 상승 된 자격 증명
- 12. 상승 된 권한으로 콘솔 출력을 시작 함
- 13. 상승 된 활성화를 지원하도록 클래스 구성
- 14. 시스템 프로세스 실행
- 15. 백그라운드 프로세스 실행
- 16. 숨겨진 모드에서 프로세스 실행
- 17. 장기 실행 프로세스 종료
- 18. 다중 프로세스 실행
- 19. 다중 스레딩 프로세스 실행
- 20. Testing ProcessStartInfo 프로세스 실행
- 21. 요격 프로세스 실행
- 22. 백그라운드에서 프로세스 실행
- 23. 원격 프로세스 실행
- 24. PowerShell의 실행 파일 목록에서 프로세스 살생 프로세스
- 25. iPhone : 빌드 프로세스에서 실행 파일을 자동으로 압축합니다.
- 26. 배포 프로젝트를 만들 때 설치를 시작한 사용자로 프로세스 실행
- 27. 원격 실행 프로세스에서 상태 가져 오기
- 28. Python을 사용하여 원격으로 프로세스 실행
- 29. 필요한 경우에만 권한 상승
- 30. 실행 파일이 배포 프로젝트의 일부일 때 상승 요청하지 않음
이것은 http://stackoverflow.com/questions/2206646/create-a-process-with-ordinary-rights-from-an-administrator-process의 복제본입니다. –