c#/helper

c# ApplicationManifest 관리자 권한 설정

AUSTAR 2024. 4. 22. 23:29

c# 으로 만든 프로그램을 관리자 권한으로 실행 시키기 위해서는 app.manifest 파일을 생성하여 관리자 권한을 요청하도록 설정해야한다.

 

프로그램이 실행되며 요청하는 방법과 app.manifest를 통한 방법 중 app.manifest를 사용하는 방법을 이용하겠다.

 

솔루션 탐색기

최초 프로젝트 생성후 솔루션 탐색기를 보면 해당 설정을 위한 app.manifest 파일이 없다.

 

솔루션 탐색기 - 추가 - 클래스

app.manifest 를 추가할 프로젝트에서 오른쪽 클릭 후 [추가]-[클래스]를 선택한다.

 

새 항목 추가

하단 이름 부분에 app 을 입력한 후 목록을 내리면 [어플리케이션 매니페스트 파일(Windows만 해당)] 항목을 선택한 후 [추가] 버튼을 누른다.

 

app.manifest

솔루션 탐색이에 app.manifest 파일이 추가되며 편집화면에 파일이 열린다.

 

app.manifest

해당 화면에서 붉은 박스에 있는 requestedExecutionLevel 태그의 level 값을 asInvoker 에서 requireAdministrator 로 변경할 경우 실행시 관리자 권한을 요청하게 된다 소스 코드로 보면 다음과 같이 변경하면 된다.

 

app.manifest

 

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

 

변경 후 저장을 하고 프로그램을 실행 시키면 관리자 권한을 요청한 후 수락 시 프로그램이 실행된다.

 

프로젝트를 더블클릭 해서 나오는 프로젝트 설정값을 확인하면 등록한 app.manifest 가 PropertyGroup 태그안의 ApplicationManifest 태그로 추가된 것을 확인할 수 있다.

 

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net8.0-windows</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <UseWPF>true</UseWPF>
        <ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
        <ApplicationManifest>app.manifest</ApplicationManifest>
    </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
  </ItemGroup>

</Project>