Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows 7 and Vista UAC - Programmatically requesting elevation in C#

Tags:

I have a program that only requires elevation to Admin on very rare occasions so I do not want to set-up my manifest to require permanent elevation.

How can I Programmatically request elevation only when I need it?

I am using C#

like image 402
Chris Avatar asked Feb 17 '10 16:02

Chris


1 Answers

WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()); bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);  if (!hasAdministrativeRight) {     RunElevated(Application.ExecutablePath);     this.Close();     Application.Exit(); }  private static bool RunElevated(string fileName) {     //MessageBox.Show("Run: " + fileName);     ProcessStartInfo processInfo = new ProcessStartInfo();     processInfo.Verb = "runas";     processInfo.FileName = fileName;     try     {         Process.Start(processInfo);         return true;     }     catch (Win32Exception)     {         //Do nothing. Probably the user canceled the UAC window     }     return false; } 
like image 61
Chris Avatar answered Dec 14 '22 00:12

Chris