![]() |
LogonUI - изменение размеров аватаров
Вложений: 1
В интернете очень много интересных модифицированных экранов приветствия (logonUI.exe). Многие авторы кардинально меняют дизайн экрана, и делают размер аватарок большим, по подобию висты. Но, вот беда - размер подложки (PictureFrame) изменить можно, а самой аватарки юзьверя - нет. Она всегда 48 на 48 точек. Поэтому, в этих логонах аватарки не отображаются, а на подложке нарисована жеско заданная аватарка. Она будет едина для всех пользователей. Что не очень красиво.
Найдя красивый логон http://raulwindows.deviantart.com/ar...3-10-111322984 я решил его доработать. После основных доработок ресурсов я покопался IDA в его потрошках. И, вот что получилось: Картинки отображаются реально размером 96х96 точек :). Для этого необходимо пропатчить в 3 местах процедуру LogonAccount__OnTreeReady: Код:
.text:01009948 push 24h ; nNumber Первое вхождение задает размер, когда аватарка грузится из bmp картинки, вторые два - когда невозможно загрузить картинку и загрузка идет из внутреннего ресурса №114. Для патча нам надо в любом HEX - редакторе открыть LogonUI и найти и заменить следующее (3 вхождения): Код:
6A 24 E8 -> 6A 48 E8 После сохранения файла проверяем, что теперь у нас тарки размером 96x96! Но, иметься только проблема, даже две: 1. Менеджер учетных записей всегда создает картинки 48x48 2. При отсутствии картинки logonui сам создает какртинку тоже 48x48. Ищем далее. Искомая функция сидит уже не в LogonUI а в Shell32.dll - без имени, №324. В ее подпрограмме находим: Код:
.text:7CAD3F3F jmp short loc_7CAD3F46 Для патча нам надо в любом HEX - редакторе открыть Shell32.dllи найти и заменить следующее (1 вхождениу): Код:
EB 05 6A 30 5F 8B -> EB 00 6A 60 5F 8B После подмены shell32 на патченную и перезагрузки аватарки создаются 96 px. Только следует учесть, что эта функция только уменьшает картинки. Если же картинка была менее 96 пикселей, то такой она и останется. Но, это не страшно - logonUi сам растянет при отображении до 96x96 точек. При экспериментах учитывайте то, что при ошибке компьютер может не загрузится. Заранее имейте ERD диск или параллельно установленную систему. Пример логона во вложении. Shell32 пропатчте при необходимости сами. PS За основу был взят экран Logon User Interface created by RaulWindows.deviantart.com, правда тут от исходного мало чего осталось. Но, так что, если захотите включить в какие-либо публичные пакеты/сборки, желательно испросить разрешения у автора. Так же хинт для отладки логона. Если неправильно что-то сделать, то после проверки по Win-L может не отобразится сам аккоунт. И войти обратно невозможно. Завершаем работу с перезагрузкой и после загрузки до логона удерживая ctrl-alt жмем два раза del. В окне классического входа вводим имя и пароль и попадаем в виндовс. Чтобы не повторять ошибку, запускаем любой сторонний менеджер, закрываем процесс explorer.exe и запускаем logonui. И. видим, как все отображается. LogonUI можно только прибить из менеджера процессов. Почему надо убивать проводник - потому, что LogonUI проверяет его запущенность. |
Время: 23:22. |
Время: 23:22.
© OSzone.net 2001-