2024년 5월 7일 화요일

C# 응용프로그램 관리자 권한으로 실행하기



1. 먼저 실행이 관리자 권한으로 됬는지 확인하는 메서드

static bool IsAdministrator()
{
    WindowsIdentity identity = WindowsIdentity.GetCurrent();
    if (null != identity)
    {
        WindowsPrincipal principal = new WindowsPrincipal(identity);
        return principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
    return false;
}




2.  관리자 권한으로 실행안됬을때 실행해주기

 if (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)
     {
         MessageBox.Show(ex.Message.ToString());
     }
     return;
 }



이게 느낌이 뭐냐면..  관리자 권한으로 시작되지 않은 프로그램이
자기 스스로 자기자신의 프로세스를 관리자 권한으로 실행시켜놓고
그럼 자기자신의 의 프로세스가 2개고
원래의 프로세스가 return 이되면서 자기는 죽고 관리자 권한으로 
실행한놈은 살아남아서 1개의프로세스가 무조건 관리자권한으로 
실행되는 결과로 남는거임.. 

호오 똑똑하구만.. 


댓글 없음:

댓글 쓰기