Как запустить другое приложение в качестве администратора в Windows XP - PullRequest
6 голосов
/ 17 января 2011

Я использовал файл манифеста приложения, как описано здесь , чтобы часть моего приложения работала с повышенными привилегиями (которые ему нужны).
Поэтому при необходимости основная программа просто вызывает небольшую сборку, используя Process.Start, которая затем выполняет задачу, для которой требуются права администратора.

Однако, как я могу сделать то же самое в Windows XP?
Кажется, что XP просто игнорирует этот манифест и запускает небольшую сборку в контексте текущего пользователя.

Ответы [ 3 ]

9 голосов
/ 18 января 2011

Следующий код из здесь делает именно то, что мне нужно:

ProcessStartInfo processStartInfo = new ProcessStartInfo("path", "args");
processStartInfo.Verb = "runas";

using (Process process = new Process())
{
   process.StartInfo = processStartInfo;
   process.Start();
   process.WaitForExit();
}

Так что на самом деле вам нужно установить "runas" в ProcessStartInfo.Verb.С приложенным манифестом этот код теперь отлично работает в Windows XP, Vista и 7.

Обновление:
См. Также этот ответ на аналогичный вопрос .Это в основном тот же код, только с использованием аргументов.

3 голосов
/ 17 января 2011

Вы можете использовать команду runas.

2 голосов
/ 17 января 2011

Windows XP не имеет UAC.

Вам необходимо позвонить Process.Start с учетными данными пользователя с правами администратора.

...