2010-03-26 4 views
3

UAC에 문제가 있고 다른 사용자 (CreateProcessAsUser 또는 CreateProcessWithLogonW와 같은 API)로서 대화 형이 아닌 프로세스를 실행 중입니다.다른 사용자로 프로세스를 생성 할 때 UAC를 어떻게 처리합니까?

1), (확인 새 Windows 사용자 계정 만들기 새 사용자 계정과 같은 비 대화 형 자식 프로세스를 생성)

2) 올바르게 작동은 (때 실패

내 프로그램은 다음을 수행하기위한 것입니다 UAC는

내 응용 프로그램은 관리자 매니페스트를 포함하고 UAC는 1 단계

을 완료하기 위해 사용 가능하지만 2 단계가 제대로 실행하지 못하는 경우 올바른 올린다)를 사용할 수 있습니다. 다른 사용자로 실행되는 하위 프로세스가 내 기본 프로세스 (대화식 사용자로 실행 됨)의 승격 된 권한을 상속하지 않기 때문에 이것이 의심 스럽습니다.

이 문제를 해결하는 방법을 알고 싶습니다. UAC가 꺼지면 내 프로그램이 제대로 작동합니다. 이 상황에서 UAC를 다루거나 높은 권한을 요구하려면 어떻게해야합니까?

모든 사용자에게 도움이되는 경우 새 사용자 계정에 대한 파일 암호화를 설정하기 위해 하위 프로세스를 다른 사용자로 실행해야합니다.

+0

귀하의 특별한 필요와 상황에 따라 [이 답변] (http://stackoverflow.com/a/21718198/886887)이 도움이 될 수 있습니다. –

답변

6

스폰 프로세스가이 블로그 게시물에 설명되어 CreateProcessWithLogon과에 CreateProcessAsUser를 사용하여 어떤 관리자 권한이없는 이유 : CreateProcess를 창문에 같은 낮은 층은 '아무튼 :

긴 이야기 짧은

http://blogs.msdn.com/cjacks/archive/2010/02/01/why-can-t-i-elevate-my-application-to-run-as-administrator-while-using-createprocesswithlogonw.aspx

해발 고도에 대해서 알지 못한다. ShellExecute (Ex)가 수행합니다. 따라서 CreateProcessWithLogon/CreateProcessAsUser를 사용하여 부트 스트 래퍼 응용 프로그램을 만들고 시작해야합니다. 이제는 다른 사용자로 작동하고 ShellExecute (Ex)를 사용하여 최종 응용 프로그램을 시작합니다 (예 : "runas"를 lpVerb 또는 앱에 매니페스트 제공). 그리고 이것은 쉽고 재미있는 작업이므로 Windows가 제공하는 ShellExecuteWithLogon 함수가 없습니다.

희망이 도움이됩니다.

2

maxed UAC에서 Windows 7과 비슷한 문제가 발생했습니다.

UAC가 켜지면 CreateProcessWithLogon은 LogonUser처럼 LOGON32_LOGON_INTERACTIVE처럼 제한된 토큰을 만듭니다. 이 토큰은 권한 상승을 방지합니다.

해결 방법은 먼저 전체 액세스 토큰을 반환하는 LOGON32_LOGON_BATCH를 사용하여 LogonUser를 호출하는 것입니다. 얻은 후에는 CreateProcessWithToken을 호출하십시오.

관련 문제