если свободной памяти оставалось чуть больше 10 Мбайт. Добавим, что файл подкачки, созданный на жестком диске, не позволит выполнять какие-либо операции с этим логическим диском, например клонирование или изменение размера. Кроме того, удалить этот файл можно только после перезагрузки ПК в основную ОС, т. е. после того, как WinPE его «освободит». В общем случае можно рекомендовать при малых объемах ОЗУ на ПК использовать сетевую загрузку DOS, а WinPE только в крайнем случае.

Создаем оболочку для WinPE

Так как образ WinPE загружается по сети, размер этого образа должен быть небольшим. Уменьшить размер образа можно, удалив ненужные файлы, например некоторые шрифты и драйверы устройств. Microsoft специально урезала множество функций Windows, превращая ее в WinPE, чтобы выиграть на размере образа.

В результате весь интерфейс, предлагаемый пользователю, – это консольное окно.

Однако можете самостоятельно написать свою оболочку и ввести туда только те задачи, которые вам действительно необходимы. Существуют сборки систем, аналогичных WinPE на основе Windows XP/2003/Vista, например Bart’s PE, имеющих свою оболочку. Однако организации, которые хотят получать техническую поддержку от Microsoft, будут использовать WinPE и оболочки собственного производства.

В простейшем случае оболочка – это окно с кнопками (рис. 4), нажатие на которые инициирует выполнение WinAPI-функции ShellExecute, которая в свою очередь запускает ту или иную программу. Все программы желательно разместить на сетевом файл-сервере и запускать с сетевого диска. Тогда размер оболочки окажется не больше 1 Мбайт.

Рис. 4. Предзагрузочная среда WINPE с оболочкой

Пример (здесь и далее – все примеры на Delphi):

ShellExecute(Handle,'Open',

'g: ghost32.exe,pchar(-ja= +

Edit1.text), nil,SW_SHOWNORMAL);

В данном примере функция запускает программу Ghost с сетевого диска G: и подключает клиента Ghost к сессии клонирования (ключ – ja=....), где Edit1.text – значение, содержащееся в поле формы, в котором пользователь вводит имя сессии.

Подключение сетевого диска можно выполнить с помощью WinAPI-функции WNetAddConnection2, причем невозможно воспользоваться функцией WnetConnectionDialog для вызова стандартного окна подключения сетевого диска Windows, так как в WinPE эта функция не работает. В связи с этим необходимо создавать свое диалоговое окно для подключения сетевого диска. Впрочем, сетевой диск можно подключить и вручную из окна консоли.

Однако не все программы такие простые, как Ghost, т. е. свободно запускаются из сети, не требуя никаких дополнительных файлов или изменений в Реестре WinPE. Чтобы выяснить все зависимости для конкретной программы, можно воспользоваться специальными утилитами, которые собирают изменения в реестре и файловой системе, сравнивая состояние ОС до и после установки программы. Например, можно использовать AISnapSot и AIBuilder, имеющиеся в пакете GSS. Необходимые DLL-файлы нужно скопировать в System32 образа WinPE, а изменения в Реестре сохранить в *.reg файл и автоматически загружать его при старте WinPE с помощью Startnet.bat. Например, для Paragon Hard Disk Manager это будет выглядеть так:

regedit /s paragon.reg

Здесь я умышленно заговорил о Paragon HDM, поскольку эта программа довольно тяжеловесна, а подобные программы имеют свойство долго запускаться по сети. Так как Paragon HDM может загружаться по сети около 2 мин, в то время как с жесткого диска – несколько секунд, целесообразно заставить WinPE- оболочку отслеживать появление окна загружающейся программы и информировать с помощью индикатора о текущем состоянии загрузки в отдельном потоке. Кроме того, нужно добавить еще и объект таймера, чтобы отслеживание программы прекращалось при превышении некоторого временного порога.

Отслеживать окно можно, например, с помощью WinAPI функции findwindow (поиск окна по заголовку, Title).

Пример:

if findwindow(nil,’Welcome to Paragon Partition Manager Enterprise Server Edition!’) <>0 then

begin

Timer.OnTimer:=nil; //останавливаем таймер

exit; //выходим из процедуры

//отслеживания

//заголовка окна

end;

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

Так как предзагрузочная среда в 90 % случаев используется для установки ОС, то целесообразно полностью автоматизировать процесс настройки ПО еще до первой загрузки ПК. Это касается прежде всего персональных данных пользователя и прикладного ПО. В связи с этим следует написать утилиту (назовем ее psettings), с помощью которой можно было бы вводить основные персональные настройки пользователя. Утилита должна запускаться автоматически по завершении клонирования ПК, но до его первой перезагрузки, а затем сохранять заданные администратором настройки в уже имеющийся файл c: sysprepsysprep.inf, который должен быть заранее введен в файл образа. Этот файл используется в качестве мини-установки Windows для задания таких параметров, как имя пользователя, домена, пароль администратора, региональные настройки и пр. Пакетный файл, который будет запускаться, например, при нажатии на кнопку «Клонировать ПК», может выглядеть так:

rem Удаление всех разделов с диска...

start /wait g: gdisk32 1 /del /all

rem Восстановление файла образа

rem 7700_2k.gho на жесткий диск...

start /wait g: ghost11.exe – clone,mode=

load,src=g:7700_2k.gho,dst=1 —sure

rem Запуск утилиты персональных

rem настроек...

start /wait g: psettings.exe

Необходимое ПО автоматически устанавливается с помощью пакетного файла, который создается утилитой psettings на жестком диске ПК (в момент сохранения настроек), а запускается при первом старте клонированной ОС с помощью раздела файла sysprep.inf.

Пример секции sysprep.inf:

[GuiRunOnce]

«%systemdrive% etinstall.bat»

Пример файла netinstall.bat, автоматически устанавливающего антивирус Symantec, MS Office 2003 и Visio2003:

start /wait \serversymantecSetup.exe

/qb

start /wait \serveroffice2003pro

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату