C#, 프로그램 실행 시 관리자 권한 상승

프로그램을 작성하다보면 유저 권한이 아닌 관리자 권한을 획득해야 하는 상황이 발생한다.

아래에 C#에서 관리자 권한 획득을 위한 코드를 적어본다.

아래 코드는 윈도우 폼 프로그램 작성 시에는 Program.cs 에서 수정을 하면 된다.

using System;
/* 실행 시 관리자 권한 상승을 위해 추가*/
using System.Security.Principal;
using System.Diagnostics;
/* 추가 끝 */

namespace adminTest
{
    static class Program
    {
        

        /// 
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// 
        [STAThread]
        static void Main()
        {

            /* 실행 시 관리자 권한 상승을 위한 코드 시작 */
            if (/* Main 아래에 정의된 함수 */IsAdministrator() == false)
            {
                try
                {
                    ProcessStartInfo procInfo = new ProcessStartInfo();
                    procInfo.UseShellExecute = true;
                    procInfo.FileName = Application.ExecutablePath;
                    procInfo.WorkingDirectory = Environment.CurrentDirectory;
                    procInfo.Verb = "runas";
                    Process.Start(procInfo);
                }
                catch (Exception ex)
                {
                    System.console.writeline(ex.Message.ToString());
                }

                return;
            }
            /* 실행 시 관리자 권한 상승을 위한 코드 끝 */
        }
        /* 실행 시 관리자 권한 상승을 위한 함수 시작 */
        public static bool IsAdministrator()
        {
            WindowsIdentity identity = WindowsIdentity.GetCurrent();

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

            return false;
        }
        /* 실행 시 관리자 권한 상승을 위한 함수 끝 */
    }
}
 
위 코

댓글 없음:

댓글 쓰기

안녕하세요 :)