애플리케이션에서 실행시 권한 조정: 메니페스트 파일 이용
프로젝트: 오른쪽 클릭 > 추가 > 새 항목 > [범주: 일반] 응용 프로그램 매니페스트 파일
매니페스트 파일에서 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
'Programing > 닷넷' 카테고리의 다른 글
LINQ 예제 (0) | 2012.12.05 |
---|---|
도를 라디안으로 변환하기 (0) | 2012.12.05 |
[WinForm] 메인 폼의 크기를 고정하거나 조정 (0) | 2012.11.28 |
[C#] 크로스 스레드 작업이 잘못되었습니다 (0) | 2012.11.01 |
[WinForm] 제목표시줄 안보이게 하기 (0) | 2012.10.22 |