Автозапуск приложений в среде Windows PE и оболочка.

Severnyj

Команда форума
Супер-Модератор
Ассоциация VN/VIP
Сообщения
8,427
Реакции
5,442
Как уже все заметили при загрузке с образа диска, созданного таким или таким способом, сначала запускается окно командной строки, а затем открывается uVS.

Как такое происходит? и Зачем это нужно?

Автозапуск в среде предустановки можно выполнить двумя способами, но оба они неудобны, если мы хотим организовать программную оболочку вроде explorer.

Что это за способы?

***

Первый способ это редактирование файла startnet.cmd на этапе, когда wim-образ уже смонтирован и настроен, но еще не отключен командой:

Код:
Dism /Unmount-Wim /MountDir:<Путь к директории со смонтированным образом> /Commit

Подробнее о монтировании образа и его настройке читайте в этой статье.

Данный файл расположен по следующему пути:

Код:
<Путь к директории со смонтированным образом>\Windows\system32\

и в чистом виде содержит всего одну обязательную строку:

Код:
wpeinit

Команда wpeinit является обязательной поскольку ее назначением является инициализация системы Windows PE при каждой загрузке.

Отредактировав файл startnet.cmd, можно сделать так, чтобы после выполнения инициализации запускалась необходимая нам программа, например:

Код:
wpeinit
%SYSTEMDRIVE%\uvs\FAR\Far.exe

здесь будет запущен файловый менеджер Far, входящий в набор uVS_Pack.

При закрытии окна командной строки, произойдет автоматическая перезагрузка компьютера.

***​

Второй способ - это редактирование файла Winpeshl.ini, который находится в той же директории, что и файл startnet.cmd. По краткой инструкции - задумка прекрасная, но к сожалению из-за каких-то ошибок она работает не так, как мы это себе представляем. И отличие только в том, что приложения выполняются по очереди, а по закрытию последнего выполняется автоматическая перезагрузка. Поэтому в свое время я написал маленькую программку, задачей, которой является:

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

    Код:
    <Путь к директории со смонтированным образом>\explorer\autorun.cmd

    и по умолчанию файл должен иметь только одну уже знакомую нам строку:

    Код:
    wpeinit

  • После окончания выполнения всех команд из файла autorun.cmd (В нем можно прописать практически что угодно, будь то твики реестра или создание директорий), будет запущен файл располагающийся по пути:

    Код:
    <Путь к директории со смонтированным образом>\explorer\explorer.exe

    , который и является оболочкой - это может быть BS explorer или Nu2Menu - исполняемый файл должен быть переименован в explorer.exe, а конфигурационные файлы приложения, использующегося в качестве оболочки, должны быть отредактированы.

  • Затем программа остается висеть в памяти и ждать пока процесс explorer.exe не будет завершен - после чего произойдет все та же автоматическая перезагрузка.

Данная программка написана на языке AutoIt и имеет такой код:

Код:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.6.1
 Author:         Severnyj

 Script Function:
	Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

#NoTrayIcon

$System32Dir=@SystemDir
$SystemDrive=Stringleft($System32Dir,2)

If FileExists($SystemDrive & "\explorer\autorun.cmd") <> 1  Then 
	    $deadfile = " Отсутствует необходимый файл: " & $SystemDrive & "\explorer\autorun.cmd"
	    MsgBox(4096, "Внимание!", "Работа программы завершается " & $deadfile)
		_END ()
EndIf

If FileExists($SystemDrive & "\explorer\explorer.exe") <> 1  Then 
	    $deadfile = " Отсутствует необходимый файл: " & $SystemDrive & "\explorer\explorer.exe"
	    MsgBox(4096, "Внимание!", "Работа программы завершается " & $deadfile)
		_END ()
EndIf
	 

SplashTextOn("Пожалуйста подождите...", "Инициализация системы...",200,80)
WinActivate("Пожалуйста подождите...", "")
	  RunWait($SystemDrive & "\explorer\autorun.cmd")
SplashOff()

SplashTextOn("Пожалуйста подождите...", "Запуск оболочки...",200,80)
WinActivate("Пожалуйста подождите...", "")
	  Run($SystemDrive & "\explorer\explorer.exe")
SplashOff()

ProcessWaitClose("explorer.exe")
_END ()

Func _END ()  
    Shutdown(2)
    Exit
EndFunc

Готовая скомпиллированная версия прикреплена к сообщению.

Запускать мы ее будем в среде предустановки путем автозагрузки редактированием файла WinPeshl.ini:

Код:
[LaunchApp]
AppPath = %SYSTEMDRIVE%\<путь>\launcher.exe
[LaunchApps]

Так при запуске Windows PE будет запущен наш автозагрузчик, который выполнит описанные выше операции.
 

Вложения

  • launcher.zip
    267.1 KB · Просмотры: 96
Назад
Сверху Снизу