6

У меня есть программа, которая запускает окно браузера, когда пользователь выполняет определенные действия. Моя программа требует доступа администратора (то есть должна быть запущена через "Запуск от имени администратора" или для свойства requestElevationLevel установлено значение requireAdministrator в файле манифеста в Vista или Win7).

Я обеспокоен тем, что браузер унаследует уровень повышения родительского процесса; то есть я обеспокоен тем, что браузер также будет запущен с правами администратора. Это правильно? Если так, есть ли способ предотвратить это?

2 ответа2

7

UAC может быть довольно сложной концепцией, чтобы обернуть голову вокруг. Вообще говоря, дочерний процесс наследует свой токен доступа от родительского процесса. Однако это происходит, только если оба процесса имеют одинаковый integrity level:

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

Уровни целостности зависят от множества факторов, но, вообще говоря, веб-браузер является приложением с low integrity и, вероятно, потребует дополнительного запроса UAC, если он попытается выполнить какую-либо операцию, требующую более высокого уровня привилегий:

Windows 7 защищает процессы, отмечая их уровни целостности. Уровни целостности являются мерой доверия. Приложение с "высокой" целостностью - это приложение, которое выполняет задачи, которые изменяют системные данные, такие как приложение для разбиения диска, в то время как приложение с "низкой" целостностью - это приложение, которое выполняет задачи, которые могут потенциально поставить под угрозу операционную систему, например веб-браузер. Приложения с более низким уровнем целостности не могут изменять данные в приложениях с более высоким уровнем целостности.

Если вы хотите узнать больше о UAC, следующие статьи являются хорошим ресурсом:

0

Ты прав. Любой процесс, который порождает дочерний процесс, по умолчанию наследует свой контекст безопасности (администратор или нет).

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .