UAC подсчет высоты - как это работает? - PullRequest
4 голосов
/ 18 октября 2011

Windows отображает запросы UAC на «защищенном рабочем столе», когда необходимо выполнить определенные операции, связанные с безопасностью.Очевидно, что где-то есть API, который создает безопасный рабочий стол и создает на нем окно, но я понятия не имею, где бы я узнал о задействованных механизмах.Я думаю, я мог бы реверс-инжиниринг механизмов UAC, но я не настолько хорош на этом уровне реверс-инжиниринга (и я почти уверен, что здесь есть некоторые юридические последствия ...)API для создания новых рабочих столов в текущем сеансе, но ни в одной документации, которую я могу найти, нет упоминания о безопасных рабочих столах.Из любопытства я хотел бы знать, как работает создание защищенного рабочего стола / UAC.

Отказ от ответственности: это чисто теоретический вопрос, и я не собираюсь развертывать его в любомкод.

Ответы [ 4 ]

3 голосов
/ 20 октября 2011

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

Насколько я знаю, безопасный рабочий стол не имеет особого поведения, поэтому я не вижу оснований предполагать, что задействован какой-либо дополнительный API (задокументированный или нет).

1 голос
/ 18 октября 2011

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

http://msdn.microsoft.com/en-us/library/bb756945.aspx

Что касается UAC, насколько мне известно, вся информация о том, как UAC должен работать с конкретным приложением, находится в манифесте, который встроен в exe или dll на этапе компоновки.

С тех пор, как изменились .Net, даже приложения, отличные от .Net, должны иметь манифест в них, чтобы сообщить Windows, что они не являются .Net.Все встроенные в более новые версии Visual Studio или, по крайней мере, те, которые я встроил, имеют широкий диапазон параметров UAC в разделе манифеста параметров компоновщика, включая те, которые позволяют отключить его.

0 голосов
/ 26 сентября 2018

Способ запуска процесса в Windows использует CreateProcess .

CreateProcess выполняет 3 проверки, чтобы определить, требует ли приложение повышения прав:

  • приложение запрашивает запуск с повышенными правами (requestedExecutionLevel=requireAdministrator)
  • эвристик думает, что приложение может быть установщиком (например, с именем setup.exe, installer.exe, update.exe) (который может быть отключен групповой политикой)
  • AppCompat говорит, что приложение дерьма должно быть повышено

Если CreateProcess решает, что процесс должен быть запущен с правами администратора, а у пользователя в настоящее время нет прав администратора, он завершается ошибкой и возвращает ошибку:

ERROR_ELEVATION_REQUIRED (740)

ShellExecute знает, как обрабатывать этот новый код ошибки

ShellExecute - это оболочка более высокого уровня для CreateProcess . Он знает, как обрабатывать этот новый код ошибки из CreateProcess .

ShellExecute - это функция, которая вызывает службу AppInfo (Информация о приложении). Служба AppInfo запускает Consent.exe, что является подсказкой UAC. И он выполняет возвышение.

  • если пользователь является администратором с ограниченными правами администратора, он запрашивает авторизацию
  • если пользователь является стандартным пользователем, он запрашивает учетные данные

AppInfo запускает новый процесс, а ShellExecute возвращает.

Источник

0 голосов
/ 25 июня 2014

Существует клон UAC с источником, который также работает на XP.Он называется SuRun и содержит некоторые дополнительные функции, такие как автоматическое повышение прав для определенных приложений.

Блог и документы на немецком языке: http://kay -bruns.de / wp / software / surun НемецкийДокументы содержат много подробной информации: http://kay -bruns.de / download / SuRun1209.pdf

Sourceforge Page: http://sourceforge.net/projects/surun/ Это C ++

...