Создаем свой экран загрузки в Windows Vista

Первая статья на нашем сайте по настройке Windows Vista. В ней мы разберем процесс создания своего собственного экрана загрузки в новой ОС.

Введение в Windows Vista boot screen

Для изменения экрана загрузки Windows XP, было необходимо вносить изменения в исполнительный файл ntoskrnl.exe. Однако изменение ntoskrnl.exe было небезопасной операцией, малейшая ошибка могла привести к серьезным ошибкам системы.

В Windows Vista процесс загрузки был изменен. Теперь вся графика, использующаяся при загрузке системы, перемещена, добавлены новые загрузочные приложения winload.exe и winresume.exe, а все критические компоненты ядра получили цифровую подпись. Из-за этих цифровых подписей вносить изменения в компоненты ядра больше невозможно, но это вовсе не означает, что нельзя изменить экран загрузки Windows Vista.


Важно о Multilingual User Interface ( MUI )

Windows Vista предлагает новые функциональные возможности в области Multilingual User Interface (MUI). Эти новые функциональные возможности позволяют разработчикам разделить локализованные ресурсы (текстовые строки) и независимые ресурсы (битмапы, иконки, курсоры). Обычно, отдельные .mui файлы содержат локализованные ресурсы, а исполнительные теперь содержат независимые ресурсы. Если ранее .dll или .exe был нормальным Win32 PE файлом, включенным в основной код, то в Windows Vista Win32 ресурсы автоматические считывают дополнительные .mui файлы.

Этот процесс выглядит следующим образом: сначала, ресурсы, найденные в исполнительном приложении, считываются в память. Затем, система решает, какой .mui файл использовать (в зависимости от выбранного языка) и считывает ресурс оттуда, накладывая его поверх считанных до этого ресурсов, заменяя любые уже существующие ресурсы! Если какой-либо ресурс имеется в .mui файле, он будет считан оттуда, но если его там нет, система возьмет его из основного исполнительного файла (конечно, если там он есть). Но какое отношение имеет MUI к загрузочному экрану boot screen?

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

Именно по такому принципу мы будем делать свой экран загрузки в Windows Vista. Так что запускайте вашу любимую программу для работы с ресурсами Win32, для этого подойдут Resource Builder или Resource Hacker. Для примера возьмем Resource Hacker.


Изменение картинки экрана загрузки

В данном материале предполагается, что вы установили Windows Vista в раздел C: жесткого диска. Если у вас Vista установлена в другом разделе, измените буквы дисков в соответствии с разделом диска. Перед тем, как приступить к созданию своего экрана загрузки Windows Vista, создадим рабочую папку (пусть это будет D:\bootscreen\). В нее мы будем сохранять изменяемый файл winload.exe.mui.

1. С помощью Resource Hacker откройте C:\Windows\System32\Boot\winload.exe и перейдите к ресурсу 1 в секции ресурса RCData (там только один ресурс RCData). Сохраните его содержимое как D:\bootscreen\winload.wim.

Сохраненный Windows Image (WIM) файл содержит битмапы загрузочного экрана. Вы можете изменить winload.wim используя ImageX.

2. Смонтируйте образ WIM с правами записи в директорию D:\bootscreen\mount\ командой:

imagex /mountrw X:\bootscreen\winload.wim 1 X:\bootscreen\mount

Если ImageX удачно смонтировал образ, то в каталоге D:\bootscreen\mount\ вы увидите два файла: osload800x600.bmp и osload1024x768.bmp. Эти файлы используются как загрузочные картинки boot screen на разрешениях 800х600 и 1024х768 соответственно. Вы можете заменить их на ваши собственные, при этом они должны иметь тотже формат, название и  размер.

3. После изменения этих файлов, подтвердите изменения в WIM командой:

imagex /unmount X:\bootscreen\mount /commit

4. Теперь D:\bootscreen\winload.wim содержит ваши изображения. Скопируйте C:\Windows\System32\Boot\en-US\winload.exe.mui в D:\bootscreen\winload.exe.mui и откройте в Resource Hacker.

5. Создайте новый ресурс типа RCDATA с названием 1 и языком 1033 (1033 обозначает английский США) и импортируйте D:\bootscreen\winload.wim как данные ресурса. Сохраните файл и закройте Resource Hacker.

Если ваша Windows Vista не на английском языке, то вам придется поменять значение языка на соответствующее. Список значений языков вы найдете здесь (значение для русского языка - 1049).

6. Скопируйте D:\bootscreen\winload.exe.mui назад в C:\Windows\System32\Boot\en-US\winload.exe.mui.

Вот мы и изменили картинку экрана загрузки. На данном этапе можно остановиться и довольствоваться своим изображением bootscreen'а, но ведь еще можно изменить текстовую надпись экрана загрузки Windows Vista.


Изменение текста экрана загрузки

1. Откройте D:\bootscreen\winload.exe.mui в Resource Hacker, пройдите к ресурсу osloader.xsl в 23  секции ресурса, и экспортируйте его как D:\bootscreen\osloader.xsl.

2. Для изменения текста экрана найдите в файле osloader.xsl значение Starting Windows Vista на любое желаемое.

3. Изменить позицию текста можно пройдя к разделу osload-graphics и поменяв значение высоты и ширины элемента textarea.


экран загрузки Windows Vista

На скриншоте явно видна область textarea, можете сделать так, как вам больше нравится.

Подробно об изменении экрана загрузки в Windows XP можно прочитать здесь.