본문 바로가기

Programing/닷넷

UAC관련 개발사항

애플리케이션에서 실행시 권한 조정: 메니페스트 파일 이용

  프로젝트: 오른쪽 클릭 > 추가 > 새 항목 > [범주: 일반] 응용 프로그램 매니페스트 파일

  매니페스트 파일에서 level을 주석을 보고 설정한다. asInvoker, requireAdministrator, highestAvailable 세 가지 타입이다.



 최소 권한의 원칙 지키기: 보안쪽에 유명한 말이다. 권한은 현재 필요한 최소한의 권한만 요청하라는 것이다.
애플리케이션이 수행하는 대부분의 기능이 관리자의 권한이 필요 없고 1~2개의 적은 수만 관리자의 권한이 필요할 경우,
requireAdministrator 로 설정하지 말고 필요할 때 올리면 된다.


=> UAC self-elevation

 1. How to self-elevate an application to a high privilege level under UAC (링크)

    - 방패 모양의 아이콘을 설정(SendMessage 이용)

    - System.Diagnostics.ProcessStartInfo 를 이용(UseShellExecute)해서 RunAs 수행 수행

    - VS2008 버전의 sln 파일

    - 자기권한상승(self-elevation) 후에 관리자 권한을 획득했으면 버튼의 방패 모양을 없애는 것이 맞지 않나 생각됨.

    - 소스코드: MSKB981778a.exe


 2. UAC self-elevation (CSUACSelfElevation) (링크)

    - 현재 애플리케이션의 권한을 확인

    - NativeMethods.cs 래퍼들 있다. {NativeMethods | OpenProcessToken, DuplicateToken, GetTokenInformation, SendMessage, GetSidSubAuthority}
      참고로 SendMessage는 방패 모양의 아이콘을 설정 하는데 이용할 수 있다. (#1에도 있다)

    - VS2010 버전의 sln 파일이다! 쳇.

    - 소스코드: UAC self-elevation (CSUACSelfElevation).zip