해당 작업은 Program.cs 에서 작업을 합니다.
using System.Security.Principal;
using System.Diagnostics;
/// <summary>
/// 관리자 권한 체크
/// </summary>
/// <returns></returns>
public static bool IsAdministrator()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
if (null != identity)
{
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
return false;
}
메인 실행전에 관리자 권한으로 실행 하도록 하면 됩니다.
[STAThread]
static void Main()
{
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;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
위 방법으로로 처리 할 수 있지만 다른 방법도 있습니다.
프로그램 속성에서 보안의 “ClickOnce”를 선택합니다.
그러면은 위 처럼 “app.mainfest”가 생기게 됩니다.
※ 이방법을 할 경우에는 프로그램에 아이콘에 방패 모양이 생기게 됩니다.
원래 기본값이 “asInvoker’ 세팅된 부분을 “requireAdministrator” 로 변경하면 됩니다.