2014-03-27 3 views
0

Я использую следующий код в программе, которая не имеет повышенные привилегииНачать процесс «как администратор» не работает

ProcessStartInfo pInfo = new ProcessStartInfo(); 
     pInfo.FileName = fileToExcecute; 
     pInfo.UseShellExecute = false; 
     pInfo.RedirectStandardOutput = false; 
     pInfo.RedirectStandardError = false; 
     pInfo.CreateNoWindow = true; 
     if (runAsAdministrator) 
      pInfo.Verb = "runas"; 

     Process p = Process.Start(pInfo); 

Конечный пользователь просят выбрать, хотят ли они, чтобы запустить программу в повышенный режим или нет. Вышеупомянутый, однако, не запускает программу «Как администратор», когда runAsAdministrator имеет значение. Я запустил «fileToExcute» вручную «Как администратор», и он предлагает внести изменения в компьютер.

Затем я добавил манифест в файл «fileToExecute» для запуска с повышенными привилегиями каждый раз и при непосредственном запуске этой программы мне было предложено подтвердить разрешение на внесение изменений в компьютер. Когда я запускаю выше программу, которая использует приведенный выше код, я получаю:

System.ComponentModel.Win32Exception (0x80004005): 
The requested operation requires elevation at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) 
    at System.Diagnostics.Process.Start() at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at 
    #HLg.#ic.#zNg(String #ANg) in #pOg:line 135 

Я действительно хочу, чтобы первый вариант работы. Я пробовал все и не могу понять, почему первый вариант не работает.

ответ

3

Вы не можете комбинировать имущество Verb с UseShellExecute = false, так как глаголы полагаются на эту функциональность. Установите UseShellExecute в true, и он должен работать.

+0

спасибо. Я нашел это очень расстраивающим :-( – David

0

Я изменил свой код и не использовал параметры конфигурации pInfo. Я просто изменил все на p.verb = «runas» и т. Д., И теперь он работает.

Смежные вопросы