[WinForm] 관리자 권한으로 실행하기

2013. 10. 7. 11:01C#/WinForm

출처:

http://bywords.tistory.com/entry/C%EA%B4%80%EB%A6%AC%EC%9E%90-%EA%B6%8C%ED%95%9C-%EC%8B%A4%ED%96%89%EB%90%98%EB%8A%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%83%9D%EC%84%B1

윈도우 Vista 버전 이후로는 관리자 권한이 중요한 key가 되었습니다.

어플리케이션에서도 마찬가지 인데요.

레지스트리 관리 등의 기능을 하기 위해서는 관리자 권한이 꼭 필요합니다.

그럼 Visual Studio 2008에서 WIndows Form Application을 
관리자 권한으로 실행해 보도록 하겠습니다.


우선, 솔루션을 생성합니다.



Solution Explorer 의 솔루션에서 Properties(속성)을 클릭합니다.


Security(보안) 탭으로 가서, 
Enable ClickOnce Security Setting(ClickOnce 보안 설정 사용)을 선택합니다.



그러면 약간의 버퍼링 후, 
Soultion Explorer의 Properties에 App.manifest 파일이 생긴것을 볼 수 있습니다.

이 방법을 이용하지 않을 수도 있지만, 
그렇게 하면 더 복잡하니 자동으로 파일을 생성해 주는 이방법을 사용하는게 편합니다 ^^

여기서 중요! ClickOnce의 체크박스를 다시 해지해 줍니다.
ClickOnce에서는 일반 권한밖에 정할 수가 없네요 ㅠ


그럼 관리자 권한 설정을 위해 manifest파일을 엽니다~



중간 부분에 보면 주석과 함께 아래와 같은 코드가 있는 것을 볼 수 있네요.

         <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the 
            requestedExecutionLevel node with one of the following.

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

            If you want to utilize File and Registry Virtualization for backward 
            compatibility then delete the requestedExecutionLevel node.
        -->


권한 설정을 위해 아래의 코드 중에 선택하라.. 뭐 이런 말 같은데요ㅎㅎ


우리는 관리자 권한을 위해
<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
이 코드를 asInvoker 대신 삽입해 줍니다.



그러면 완료! 프로그램이 관리자 권한으로 실행되게 됩니다~