티스토리 뷰

비스타의 UAC(사용자 계정 컨트롤)에 대응하는 권한 상승 시키기
 
Vista 가 나오면서 응용 프로그램의 .manifest 를 추가함으로써 UAC 에 대응할 수 있는 권한 상승 효과를 얻을 수 있었습니다. 설치 프로젝트의 경우 VS2005 까지 그러한 기능이 제공 되지 않았기 때문에, 이번 VS2008 의 배포 프로젝트의 권한 상승 기능은 환영할 만합니다.
 
그럼 VS2005 버전(그 이하버젼) 에서는 어떻게 비스타 배포를 할 수 있는지 알아보죠.
 
1.      .Manifest 를 작성하여 Setup.exe 와 Setup.exe.manifest 배포하기
간단히 실행파일(확장자포함).manifest 의 파일을 추가함으로써 권한 상승 효과를 볼 수 있습니다.

2.      .Manifest 를 리소스에 포함하여 Setup.exe 파일 배포
Windows SDK mt.exe를 통해 manifest 정보를 리소스에 포함할 수 있습니다.
사용예) mt.exe /manifest MyApp.exe.manifest /outputresource:MyApp.exe;#1

만약 서명된 어셈블리라면 리소스 포함 manifest 를 사용할 수 없습니다. 왜냐하면 서명된 이후 이셈블리가 변경이 가해졌기 때문에 실행될리 없겠죠.
 
 
VS2008 설치 프로젝트의 새로운 권한 상승 기능
 
아쉽게도, 이 기능은 VS2008 설치 프로젝트에서 어떠한 UI 도 제공하지 않습니다.
이게 무슨 뚱딴지 같은 소리냐! 맞습니다…
VS IDE 에서 이 옵션을 제어할 수 있는 어떠한 Property 도 제공되지 않습니다.
 
[그림1] VS IDE 의 Setup Project 의 권한 상승 기능 Property 가 제공되지 않는다
 
하지만, 실망할 것 없습니다. 간단하게 프로젝트 파일을 열어 약간의 속성을 변경해 주면 되기 때문이죠.
 

 
1.      Setup Project 의 .vdproj 파일을 텍스트 편집기를 통해 엽니다
2.      MsiBootstrapper의 RequireElevation 속성을 FALSE 에서 TRUE 로 변경합니다
 

만약, VS2005 의 설치 프로젝트를 VS2008 로 컨버팅 작업을 하게 되면, 위의 RequireElevantion 속성을 따로 넣어 주셔야 합니다.

 
 
이렇게 한 후, 다시 컴파일 한 후에 Setup.exe 를 실행시켜 보면 권한 상승 요구 창이 뜨는 걸 확인할 수 있습니다.
이 기능이 IDE 의 Property 속성에 들어갔으면 참 편리할텐데 라고 생각하는데, 왜 꼬깃꼬깃 기능을 숨겨놓았는지 아이러니 하네요 ^^;
 
여기서 한가지 주의할 것은, MSI 설치 파일은 Setup.exe 와 다르게 권한 상승이 되지 않습니다. Orca Tool 이나 script 를 이용하여 권한 상승을 할 수 있는데, 다음 기회에 살펴보도록 하겠습니다.
댓글