본문 바로가기

C#

C# Visual Studio 응용프로그램 관리자 권한 실행방법 2가지

윈도우 운영체제에서 시스템 설정을 변경하기 위해서는 관리자 권한이 필요합니다.

그에 따른 C#으로 프로그램 개발 시 관리자 권한으로 실행되도록 하는 방법 2가지를 소개하고자 합니다.

1. manifest 파일을 이용하는 방법 

1) 관리자권한으로 실행할 프로젝트를 선택한 후 [프로젝트(P)] 메뉴의 맨 아래 [프로젝트명 속성(P)]메뉴를 선택합니다.
2) 메뉴창에서 [보안]탭을 선택 후 [ClickOnce 보안 설정 사용(N)] 체크박스를 체크해줍니다.
2-1) 체크 후 아래 라디오박스가 활성화된 모습
2-2) 위에서 ClickOnce 보안설정사용 체크 후 Properties아래 app.manifest 파일이 추가되며 해당 파일을 연다.
3) 첫 app.manifest 파일의 모습
4) 화살표 부분의 level 내용을 asInvoker 에서 requireAdministrator 로 변경하고 저장해준다.
5) 2)번의 사진처럼 [보안]탭으로 다시 돌아가서 [ClickOnce 보안 설정 사용(N)] 체크박스를 해제한다.

6) 이후 디버그 시 응용프로그램이 관리자 권한으로 실행되는 것을 확인할 수 있다.

 

 

2. ProcessStartInfo 의 Verb(동사)를 이용하는 방법

using System.Diagnostics;
using System.Security.Principal;

namespace TEST
{
    static class Program
    {
        /// <summary>
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// </summary>
        [STAThread]
        static void Main()
        {
            // 해당 실행이 관리자 권한이 아닌경우 관리자권한으로 재시작한다.
            if (IsAdministrator() == false) 
            {
                try
                {
                    ProcessStartInfo info = new ProcessStartInfo()
                    {
                        UseShellExecute = true,
                        FileName = Application.ExecutablePath,
                        WorkingDirectory = Environment.CurrentDirectory,
                        Verb = "runas"
                    };

                    Process.Start(info);
                }
                catch (Exception ex)
                {                    
                    MessageBox.Show(ex.Message);
                    return;
                }
            }
            // 해당 실행이 관리자 권한인 경우 그대로 실행한다.
            else
            { 
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new TestForm());
            }
        }

        /// <summary>
        /// 관리자권한 여부를 점검한다.
        /// </summary>
        /// <returns></returns>
        public static bool IsAdministrator()
        {
            WindowsIdentity identity = WindowsIdentity.GetCurrent();

            if (identity != null)
            {
                WindowsPrincipal principal = new WindowsPrincipal(identity);
                return principal.IsInRole(WindowsBuiltInRole.Administrator);
            }

            return false;
        }
    }
}

 

지금까지 응용프로그램을 관리자권한으로 실행하는 방법에 대하여 알아봤습니다.

2가지 방법 중 선택하여 사용하시면 됩니다.

감사합니다.

'C#' 카테고리의 다른 글

폴더 생성하기  (0) 2021.10.19
C# 홀수, 짝수 여부 판단하기  (0) 2020.01.16
C# 진수 변환  (0) 2020.01.16
C# 양력 음력 변환  (0) 2020.01.16
C# DateTime의 일자관련 Method  (0) 2020.01.14