requestExecutionLevel и runas, похоже, игнорируются в манифесте c .q. ProcessStartInfo - PullRequest
0 голосов
/ 02 марта 2020

Наше приложение работает под собственным профилем и привилегиями пользователя, но мы даем ему возможность запускать исполняемый файл, который обновляет его программное обеспечение.

Этот исполняемый файл должен работать с повышенными привилегиями

Я добавил это к манифесту

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Он отлично работает на разных машинах, но на нескольких машинах я обнаружил, что приложение вообще не запускается.

Я пытался просто запустить исполняемый файл с помощью process.start

Process.Start(<path to executable>)

Я также попытался добавить глагол runas

Dim pWS As ProcessStartInfo
pWS = New ProcessStartInfo
pWS.FileName = <path to executable>
pWS.Verb = "runas"
pWS.UseShellExecute = False
Dim oProc As Process
oProc = Process.Start(startInfo:=pWS)
oProc.WaitForExit()

Когда я убедился, что на компьютере пользователя включен UA C, и я дважды - нажмите на исполняемый файл из их Windows Исследуйте, он работает отлично. UA C спрашивает пользователя, хотят ли они, чтобы исполняемый файл вносил изменения, и т. Д. c, и когда он go «Да», он делает именно то, что ему нужно.

Так что же я Мне не хватает, когда я звоню из VB. NET сборки согласно приведенному выше коду?

Я также попытался использовать Shellexecute вместо:

pWS.UseShellExecute = True

тоже не радует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...