6

I have a visual studio setup and deployment project. I've added a .cmd script in it. The script would need administrator privileges to run. When user clicks on the setup.exe, UAC prompts the user for Admin permissions. So I assumed that all processes created and called within setup.exe will run in admin capacity. So I made the setup call my console application which contains the following code.

ProcessStartInfo p1 = new ProcessStartInfo();
p1.UseShellExecute = true;
p1.Verb = "runas";
p1.FileName = "cmd.exe";
Process.Start(p1);

So it should've worked as it's run under administrator space.

I want to run cmd.exe through c# process class as an administrator.I'm running windows vista.

I tried didn't work! What can I do?

Cœur
  • 37,241
  • 25
  • 195
  • 267
Anirudh Goel
  • 4,571
  • 19
  • 79
  • 109

2 Answers2

10

Try executing the runas command:

...

using System.Diagnostics;

...

string UserName = "user name goes here";
ProcessStartInfo p1 = new ProcessStartInfo();
  p1.FileName = "runas";
  p1.Arguments = String.Format("/env /u:{0} cmd", UserName);
Process.Start(p1);

...

(And I don't think you need an explicit UseShellExecute)

umlcat
  • 4,091
  • 3
  • 19
  • 29
Lucas Jones
  • 19,767
  • 8
  • 75
  • 88
6

Just Try this, This worked for Me.

...

using System.Diagnostics;

...

ProcessStartInfo startInfo = new ProcessStartInfo();
  startInfo.UseShellExecute = true;            
  startInfo.Verb = "runas";
  startInfo.Arguments = "/env /user:" + "Administrator" + " cmd";
Process.Start(startInfo);

...

Ashutosh

umlcat
  • 4,091
  • 3
  • 19
  • 29
  • Thanku so much for sharing your knowledge . The above code is working for me , but I want to execute "uwfmgr volume protect C:" this command from the cmd how can i do this using ur code – Apoorva Asthana Aug 24 '19 at 06:10