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개의프로세스가 무조건 관리자권한으로
실행되는 결과로 남는거임..
호오 똑똑하구만..
댓글 없음:
댓글 쓰기