Отключить Vista UAC для каждого приложения или повысить привилегии без запроса? - PullRequest
4 голосов
/ 12 мая 2009

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

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

Есть ли способ повысить привилегии программно, без необходимости, чтобы мои пользователи проходили приглашение UAC и / или не знали пароль администратора? С точки зрения безопасности, я понимаю, что большинству приложений нельзя разрешать делать это, поэтому я надеюсь, что есть какой-то способ сделать это, если я смогу предоставить правильную пару имя пользователя / пароль или что-то в этом роде.

Приложение написано на C #, поэтому предпочтительнее полностью управляемое решение, но p / Invoke Black Magic (или даже написание MC ++ Wrapper, о котором мы не говорим ) будет более приемлемым, чем полное отключение UAC.

Ответы [ 3 ]

8 голосов
/ 12 мая 2009

Как правило, эта проблема решается путем установки службы Windows, которая запускается от имени SYSTEM или учетной записи администратора. Тогда ваше приложение может запросить привилегированное действие от этой службы.

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

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

1 голос
/ 21 августа 2014

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

Просто убедитесь, что вы установили level = requireElevation в своем файле манифеста, и планировщик задач запустит ваше приложение с правами администратора, не запрашивая у пользователя прав администратора, поскольку это уже было установлено при настройке задачи с правами администратора.

0 голосов
/ 04 мая 2012

Это невозможно. Вы не можете решить подавить запрос UAC.

Вы должны спросить себя:

Что произойдет в Windows XP?

Пользователь является стандартным пользователем в Windows XP, и приложение "нуждается" для запуска в качестве администратора. Вы:

  • Откажетесь бежать?
  • произойдет сбой при запуске?
  • будет показывать пользователю сообщения об ошибках, запрещенные в доступе?

Если пользователю просто не разрешено запускать приложение как обычный пользователь в Windows XP, то UAC - ваш друг: он сообщает пользователю, что он должен быть администратором.

И даже предлагает им ( временно ) получить права администратора.

Но вы должны спросить себя:

Что произойдет в Windows Vista?

Чтобы подняться, пользователю потребуется кто-то из ИТ-персонала, чтобы пройтись по трем зданиям, чтобы они могли ввести свои учетные данные «через плечо». Возможно, вы можете сделать жизнь пользователя проще. Пусть 99,9% приложения будут запущены, а 0,01% разделены на «административный» модуль.

...