private static bool checkAdministrator(String args) { WindowsIdentity identity = WindowsIdentity.GetCurrent(); WindowsPrincipal principal = new WindowsPrincipal(identity); var isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator); if (isAdmin == false) { try { var exeName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName; ProcessStartInfo startInfo = new ProcessStartInfo(exeName); startInfo.Arguments = args; startInfo.Verb = "runas"; System.Diagnostics.Process.Start(startInfo); Application.Exit(); } catch { DialogResult errormsg = MessageBox.Show("There was an error gaining administrative privileges", "Error", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); if (errormsg == DialogResult.Retry) { checkAdministrator(args); } } return false; } return true; }