2011-01-17 3 views
6

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

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

ответ

9

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

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.

Обновление:
Смотрите также this answer to a similar question. Это в основном тот же код, просто используя аргументы.

+0

Проблема заключается в том, что в диалоговом окне Runas XP SP3 в качестве текущего пользователя отмечен по умолчанию, и даже тики «защищают мой компьютер и данные от несанкционированной активности программы» - это фактически снижает привилегии! – eug

2

Windows XP не имеет UAC.

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