본문 바로가기

우리끼리 이야기/주인장

[C#] C# 프로젝트에서 관리자 권한으로 프로그램 실행하기


Windows Vista나 Windows 7에서 Visual Studio의 Setup 프로젝트를 이용해서 Installer를 만들어 설치하게 되면 파일 쓰기 작업이 실행되지 않는다.

이것은 기본적으로 인스톨러를 만들어 설치하게 되면 Program File 폴더에 설치되는데 이곳은 관리자 권한이 필요한 영역이라 실행파일을 관리자 권한으로 실행해야한다.

이것은 Manifest파일을 추가해서 해결할수있다.

프로젝트의 속성창(Properties)에 보면 Security탭이 있는데 이곳에 Enable ClickOnce security settings(ClickOnce 보안설정 사용)를 체크해주면 솔루션 탐색기 Properties폴더에 app.manifest 파일이 생성된다.


이파일이 생성되면 다시 Enable ClickOnce securty settings를 해제한다.

app.manifest 파일을 열어보면 중간에 보안설정하는부분이 있다.

기본적으로 <requestedExecutionLevel  level="asInvoker" uiAccess="false" /> 되어있는것을 <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />로 변경해주면 된다.

 

         <!-- 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" />

            Specifying requestedExecutionLevel node will disable file and registry virtualization.
            If you want to utilize File and Registry Virtualization for backward
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />