UAC-стиль повышенной скорости - PullRequest
2 голосов
/ 18 октября 2011

Я заинтересован в запуске окна во временном сеансе, например, как появляются запросы UAC. Некоторые люди проявили интерес к этой концепции, поэтому я решил спросить здесь. По сути, мы хотим получить окно с повышенными правами, например UAC, «вы уверены, что хотите <...>», но с произвольным окном. Конечной целью является предотвращение перехватов событий окна и других проблем, которые могут возникнуть при вводе пароля.

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

1 Ответ

4 голосов
/ 21 октября 2011

Вы можете создать рабочий стол, используя CreateDesktop .Вы можете использовать SwitchDesktop , чтобы переключиться на новый рабочий стол.Затем вы можете вызвать SetThreadDesktop в своем основном потоке и нарисовать свое окно.Чтобы вернуться назад, получите дескриптор рабочего стола по умолчанию, вызвав OpenDesktop с "Default" как lpszDesktop и используйте SwitchDesktop с этим дескриптором.Вы также можете запускать процессы на определенном рабочем столе.Для этого вы должны установить lpDesktop член структуры STARTUPINFO на имя рабочего стола, на котором должен выполняться процесс.Закройте маркеры на рабочих столах после их использования ( CloseDesktop ).

Таким способом вы можете отобразить собственное окно на собственном рабочем столе.

Безопасный рабочий стол, используемыйUAC и пользовательский интерфейс входа в систему называется "Winlogon".Для доступа к нему вам нужны системные права.Люк привел пример в одном из своих ответов .

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

...