[ACCEPTED]-Giving application elevated UAC-uac
You don't need to meddle with all that to 8 make sure that your application always runs 7 with elevated privileges. You can simply 6 add an application manifest which instructs Windows to run your app 5 elevated, and the UAC prompt will appear 4 without you needing to write a single line 3 of code.
There's a related question with 2 an answer that also describes how to add 1 a manifest here: How can I embed an application manifest into an application using VS2008?
Move the WindowsPrincipal code from your 4 Form to Program.cs as in the example below. This 3 will prompt the user for UAC authority prior 2 to launching any forms and will only launch 1 the form if UAC authority has been granted.
static void Main()
{
WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
if (!hasAdministrativeRight)
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = Environment.CurrentDirectory;
startInfo.FileName = Application.ExecutablePath;
startInfo.Verb = "runas";
try
{
Process p = Process.Start(startInfo);
Application.Exit();
}
catch (System.ComponentModel.Win32Exception ex)
{
MessageBox.Show("This utility requires elevated priviledges to complete correctly.", "Error: UAC Authorisation Required", MessageBoxButtons.OK);
// Debug.Print(ex.Message);
return;
}
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
Elevating your privileges is always going 13 to start a new process. There is no way 12 around that, other than starting with elevated 11 privileges in the first place by setting 10 your application to require administrative 9 privileges. What you can do is end the application 8 right after the elevated process starts, so 7 that you only have one application running.
This 6 scenario is usable for applications that 5 only require certain parts of their function 4 to be elevated - such as an automatically 3 self-updating installer that needs access 2 to Program Files - and not one that requires 1 administrative access all the time.
This is a much better approach when your application 2 is known to require Admin privileges from 1 the start.
More Related questions
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.