Windows Vista User Account Control (UAC)
이 글은 Microsoft Windows Vista UAC개발 정보에서 다운로드한 Top 10 Ways to Light Up Your Windows Vista Apps의 UAC(User Account Control)부분에 대해 살펴본 내용이다.
두번째 글에 이어 Windows Vista의 새로운 UAC의 실제 구조에 대해 살펴보자
UAC Architecture
아래의 그림은 Windows Vista에서 실행파일을 시작하는 프로세스 흐름에 대해 설명한다.
UAC architecture
아래는 위의 UAC구조 다이어그램이 표시하는 프로세스 흐름과 실행파일을 시작하려고 할때 UAC가 어떻게 구현되는 지에 대해 설명합니다.
Standard User Launch path
Windows Vista 일반유저 시작경로는 Windows XP의 실행경로와 비슷합니다. 그러나, 일부 수정을 포함합니다.
1. ShellExecute()는 CreateProcess()를 부릅니다.
2. CreateProcess()는 어플리케이션이 권한상승이 필요한지, AppCompat, Fusion(융합) 및 Installer Detection(검출)을 호출합니다. 실행파일은 그것의 requestedExecutionLevel을 결정하기 위해서 검사됩니다. requestedExecutionLevel은 실행파일의 어플리케이션 매니페스트에 저장됩니다. AppCompat 데이타베이스는 어플리케이션의 어플리케이션 호환성 수정 엔트리을 위한 정보를 저장합니다. Installer 검출은 셋업 실행파일을 검지합니다.
3. CreateProcess()는 ERROR_ELEVATION_REQUIRED을 알려주는 Win32 에러 코드를 반환합니다.
4. ShellExecute()는 특히 이 새로운 에러를 찾습니다. 그리고 에러를 받는것으로, 권한상승된 시작을 하기위한 어플리케이션 정보 서비스(AIS)를 교차 호출합니다.
Elevated Launch path
Windows Vista의 권한 상승된 시작 경로는 새로운 윈도우즈 시작 경로 입니다.
1. AIS는 ShellExecute()로 부터 호출을 받습니다. 권한상승이 허가되었는지 그리고 권한상승 유저 경험(elevation user experience)을 정의하기 위해 요구된 실행 레벨과 그룹 정책을 다시 검사합니다.
2. 요구된 실행 레벨이 권한상승이 필요한 경우, 서비스는 그룹 정책에 근거해서 ShellExecute에 주어져 전달된 HWND를 이용해서 호출자의 대화형(interactive) 데스크톱에 권한상승 프롬프트를 실행합니다.
3. 일단 유저가 동의하거나, 유효한 자격이 있다면, AIS는 필요한 경우에 적절한 유저에 관련된 대응 엑세스 토큰을 검색합니다. 예를 들어, highestAvailable인 requestedExecutionLevel을 요구하는 어플리케이션은 로컬 관리자 그룹(local Administrators group)의 멤버를 위해서 보다는 백업 작업자 그룹(Backup Operators group)의 멤버를 위한 다른 엑세스 토큰을 검색합니다.
AIS는 관리자 엑세스 토큰을 적용하고, 호출자의 대화형 데스크톱을 지정해서, 다시 CreateProcessAsUser()호출을 합니다.
---------------------------------------------------------------------------------
정리하고 보니 말이 복잡해서 그렇지..
실제로 Vista를 깔고 살펴보면 바로 경험하게 되는 내용의 뒷 이야기이다.
UAC에서 실행하는 과정에 권한상승이 어떻게 내부적으로 어떻게 동작하는지 알아 보았다.
다음에는 UAC가 우리 어플리케이션에 어떻게 영향을 주는지 살펴보자.
'Coding > Vista Issue' 카테고리의 다른 글
Windows Vista UAC(2) - How UAC Works(1) (0) | 2011.09.19 |
---|---|
Windows Vista UAC(1) - Why User Account Control? (2008.03 - 네이버 블로그 옮김) (0) | 2011.09.19 |
Manifest 파일 추가시키는 방법 (2008.03 - 네이버 블로그 옮겨옴) (0) | 2011.09.19 |