c # запуск процесса с пониженными привилегиями от процесса уровня администратора UAC - PullRequest
6 голосов
/ 24 октября 2011

У меня есть одна серьезная проблема с моим приложением.У меня есть приложение и средство обновления в виде отдельных исполняемых файлов.Когда доступно обновление, обновление выполняет обновление, а по завершении процесса запускает мое приложение.Основная проблема заключается в том, что приложение установлено в папке с программными файлами, поэтому программе обновления нужны привилегии администратора UAC, и это нормально, но когда мне нужно запустить приложение обновления, необходимо запустить его как обычный пользователь, потому что если оно запускается как администратори падение не работает (не проблема приложения, UAC блокирует его).Я пробовал несколько разных решений, и даже это: Как запустить НЕ с повышенными правами в Vista (.NET)

Это не помогло мне - мое приложение запускается от имени администратора.

Ответы [ 2 ]

9 голосов
/ 24 октября 2011

Вам лучше избегать запуска процесса без повышенных прав с повышенного уровня. Это сложная часть и подвержена ошибкам.

Этот подход лучше:

  1. Ваш апдейтер изначально запускается как приложение без повышенных прав, и его манифест имеет уровень asInvoker.
  2. Когда он запускается, он перезапускается с повышенными привилегиями, используя глагол runas, и передает параметр командной строки, чтобы указать это. Этот экземпляр выполняет обновление и возвращает.
  3. Здесь снова появляется модуль без обновлений, и ваше приложение запускается с тем же маркером пользователя без повышений, который запустил первый экземпляр средства обновления на шаге 1.

Довольно просто и надежно.

0 голосов
/ 14 мая 2015

Посмотрите на этот пост о том, как включить перетаскивание для процесса с повышенными правами.Несмотря на то, что в нем написано приложение MFC, вы можете использовать эти API-интерфейсы Windows в любом приложении, я полагаю

https://helgeklein.com/blog/2010/03/how-to-enable-drag-and-drop-for-an-elevated-mfc-application-on-vistawindows-7/

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