비주얼 스튜디오에서 C#으로 개발한 프로그램을 관리자 권한으로 실행시키는 방법

 

기본내용은

http://sjpison.tistory.com/68

를 참조하였음

 

같은 요령의 C++ 버젼은

http://plogds.tistory.com/351

를 참조하면 됨

 

비주얼스튜디오 비관리자권한 실행에 MSDN글 추후 참조

https://msdn.microsoft.com/ko-kr/library/aa289173(v=vs.71).aspx

 

 

위 주소의 내용으 2008버젼으로 작성되어있어

2013과 다른 내용에 대해 정리해 둔다.

 

비주얼 스튜디오에서 실행파일을 생성하면 기본적으로 권한이 일반모드로 실행되게 되어있다.

 

해당 프로그램이 시스템 접근이 필요한 경우

(레지스트리 변경이나 기타 등등)

관리자 권한으로 실행되는 것이 필요한데

매번 마우스 우측버튼을 이용해 관리자 권한으로 실행시키거나

속성창에서 관리자권한으로 실행하게끔 설정해 두는 것도 방법이지만

최초 배포단계에서 관리자 권한으로 실행되게 해주는 것이 제일 좋을 것이다.

 

새로운 프로젝트를 생성하면

프로젝트 설정에서 매니패스토가 기본설정으로 되어있는데

이것을 권한설정이 가능하도록 파일로 구성하면 된다.

즉, app.manifest 파일을 설정하면 된다.

 

그러기 위해선 일단 app.manifest 파일을 생성해야하는데

권한설정이 가능한 app.manifest 파일을 만들기 위해

프로젝트 속성창에서 보안(Security) 항목에 가서

"ClickOnce 보안 설정 사용"

체크박스를 한번 활성화 시켰다가 꺼주면 된다.

(실제 이 항목에서 완전 신뢰 응용 프로그램이라고 설정해도 관리자 권한까지 상승되지 않으며

 오히려 이 항목이 체크되어있는 상태로 관리자권한 설정을 하면 지원되지 않는 권한이라고 하며 컴파일이 되지 않는다.)

 

 

이제 "응용 프로그램" 항목에 가보면 기본설정이었던 매니패스트 부분에

app.manifest가 생성되어있음을 확인해 볼 수 있다.

 

 

실제로 변경할 부분은 app.manifest의

실행권한 항목으로 requestedExecutionLevel을 조정하면 된다.

 

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

 

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

로 변경하면 된다.

 

아래의 이미지를 보면 녹색으로 주석처리된 부분에 참조할 예제가 있으니 카피해서 붙여넣기하는게 편하다.

 

이제 컴파일된 파일이 실행될때 관리자 권한으로 실행되는 것은 잘 되는데

지금개발하는 프로그램은 비주얼스튜디오를 관리자권한으로 실행시켜 디버그 모드로 런하면 그냥 죽어버린다.

이건 뭥미?

 

 

Posted by 휘프노스
,