This way worked for me in the past:
string exe = @"C:ProjectTestInstallUtil.exe";
string args = @"C:ProjectTestROServerServiceServerinDebugmyservices.exe";
var psi = new ProcessStartInfo();
psi.CreateNoWindow = true; //This hides the dos-style black window that the command prompt usually shows
psi.FileName = @"cmd.exe";
psi.Verb = "runas"; //This is what actually runs the command as administrator
psi.Arguments = "/C " + exe + " " + args;
try {
var process = new Process();
process.StartInfo = psi;
process.Start();
process.WaitForExit();
}
catch (Exception){
//If you are here the user clicked decline to grant admin privileges (or he's not administrator)
}
Note that I'm running the commands in your batch file directly here, but of course you can also run the batch file itself:
string bat = @"C:pathoyouratchfile.bat";
var psi = new ProcessStartInfo();
psi.CreateNoWindow = true; //This hides the dos-style black window that the command prompt usually shows
psi.FileName = @"cmd.exe";
psi.Verb = "runas"; //This is what actually runs the command as administrator
psi.Arguments = "/C " + bat;
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…