Reputation: 9292
I used the application manifest file as described here to have a part of my application running with elevated privileges (which it needs).
So when needed, the main program just invokes a small assembly using Process.Start which then handles the task for which admin rights are required.
However, how can I do the same thing on Windows XP?
It seems XP just ignores this manifest and runs the small assembly in the current user context.
Upvotes: 6
Views: 6562
Reputation: 9292
The following code from here does just what I need:
ProcessStartInfo processStartInfo = new ProcessStartInfo("path", "args");
processStartInfo.Verb = "runas";
using (Process process = new Process())
{
process.StartInfo = processStartInfo;
process.Start();
process.WaitForExit();
}
So in fact you need to set "runas" on ProcessStartInfo.Verb. With the attached manifest this code now works fine on Windows XP, Vista and 7.
Update:
See also this answer to a similar question. This is basically the same code, just using arguments as well.
Upvotes: 10
Reputation: 888223
Windows XP does not have UAC.
You need to call Process.Start
with the login credentials of a user with administrative priviliges.
Upvotes: 3