.NET Start Process with higher rights

.net, admin-rights, c#, process

Solution

You need to set ProcessStartInfo.UseShellExecute to `true` and ProcessStartInfo.Verb to `runas`:

Process process = null;
ProcessStartInfo processStartInfo = new ProcessStartInfo();

processStartInfo.FileName = "WINZIP32.EXE";

processStartInfo.Verb = "runas";
processStartInfo.WindowStyle = ProcessWindowStyle.Normal;
processStartInfo.UseShellExecute = true;

process = Process.Start(processStartInfo);

This will cause the application to run as the administrator. UAC will however prompt the user to confirm. If this is not desirable then you'll need to add a manifest to permanently elevate the host process privilages.

Problem

I am trying to execute a program with admin rights through a C# application, which gets invoked with user rights only. Code ``` ProcessStartInfo psi; try { psi = new ProcessStartInfo(@"WINZIP32.EXE"); psi.UseShellExecute = false; SecureString pw = new SecureString(); pw.AppendChar('p'); pw.AppendChar('a'); pw.AppendChar('s'); pw.AppendChar('s'); pw.AppendChar('w'); pw.AppendChar('o'); pw.AppendChar('r'); pw.AppendChar('d'); psi.Password = pw; psi.UserName = "administrator"; Process.Start(psi); } catch (Exception ex) { MessageBox.Show(ex.Message); } ``` It does start winzip, but only with user rights. Is there something I am doing wrong or is it even possible to start a process with higher rights? thank you! Edit: Here is the reason behind the question, maybe it helps to understand what i actually need. I used winzip for example to get a general idea what's incorrect with my code. The actual problem is, our company uses 2 versions of a program. But before you start any of the versions you need to import a dll file with regsvr32 (with admin rights). Now I would like to write a program that let the user select the version, import the dll and starts the correct application.

Original source

Related problems