2013. 5. 16. 16:18

비스타때부터 권한 관련 내용이 강화되면서 '관리자 권한으로 실행'이라는 항목이 생겼습니다.

 

문제는 이 선택이 사용자의 선택이기 때문에 관리자 권한이 없으면 안 되는 프로그램들은 난감한 상황에 빠졌죠.

그래서 프로그램을 관리자 권한으로만 실행할 수 있도록 해야 합니다.

 

 

오른쪽 프로그램은 실행하면 바로 안내 메시지가 출력됩니다.

(관리자 권한으로 실행된다는 표시인 방패 모양이 오른쪽 아래에 붙어 있음)

 

이런걸 UAC(사용자 계정 컨트롤)라고 합니다.

 

 

1. 테스트 프로젝트

테스트용 프로젝트를 생성하고 빌드해봅시다.

관리자 권한으로 실행되는 방패 모양이 표시가 없습니다.

 

 

2. 권한 파일 생성

프로그램이 관리자 권한으로 실행되게 하기 위해서는 'app.manifest'파일이 필요합니다.

 

2-1. 직접 생성하는 방법

프로젝트에 '새 항목'을 눌러 '응용 프로그램 매니페스트 파일'을 선택하고 추가합니다.

 

 

2-2. '클릭 원'을 이용하는 방법

솔루션 탐색기 > 오른쪽 클릭 > 속성 > 보안

으로 들어가서 'ClickOnce 보안 설정 사용'을 체크합니다.

이 설정을 체크하면 자동으로 프로젝트의 'Properties' 폴더에 'app.manifest'파일이 생성됩니다.

 

 

3. 'app.manifest' 설정하기

'app.manifest'에서 아래 코드를

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

지우고 아래 코드를 넣습니다.

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

 

이렇게 말이죠.

 

 

4. 빌드하기

이제 빌드해봅시다.

 

생성된 실행파일에 방패 모양이 생겼네요.

이제 프로그램을 실행하면 안내 메시지가 출력됩니다.

 

 

마무리

권한이라는 게 점점 더 강하게 적용하도록 바뀌고 있어서 이런 문제는 점점 심해 것입니다.

원래 악용하는 소수 때문에 다수가 피해 보는 것이죠.