Основные этапы загрузки : 1)POST этап 2)MBR - главная загрузочная запись 3)Boot record - загрузочный сектор раздела 4)ntldr - загрузчик Windows 5) Инициализация ядра 5) Диспетчер сеансов 6) Запуск подсистемы Win32 7) Вход в систему 8) Автозагрузка В этой статье мы закончим загружаться .
После иницилизации ядра , kernel запускает диспетчер сеансов ( smss.exe ) для создания пользовательского сеанса . Диспетчер сеансов не относится к ядру , но также использует NativeAPI и может создавать и редактировать маркеры доступа . Он является критическим компонентом . Ядро ждёт освобождения описателя smss.exe в течение 5 секунд . Если описатель освободился раньше положенного времени , ядро генерирует крах SESSION_%НОМЕР%_INITALIZATION_FAILED .
Первым делом smss.exe создаёт обьект " Порт LPC " и символьные ссылки на устройства . Далее он обрабатывает значение HKLM\System\CurrentControlSet\Control\SessionManager\BootExecute\ и запускает требуемые программы ( по умолчанию autocheck ) , совершает "Pending rename operations" - переименовывание файлов ( можно использовать как удаление или перемещение ) . Следующей критической операцией является загрузка Known DLL ( advapi32.dll , gdi32.dll , kernel32.dll , shell32.dll , user32.dll , url.dll и других менее мне известных , но критических для работы Windows ( а точнее для windows-приложений ) . Если загрузка хотя бы одной библиотеки провалилась , smss.exe генерирует крах или перезагрузку . Для своей работы он создаёт дополнительные страничные файлы и иницилизирует некоторые разделы реестра . Далее он создаёт переменные окружения и приступает к запуску подсистемы Win32 .
Подсистема Win32 представлена драйвером win32k.sys , переключающем монитор в графический режим , и csrss.exe ( клиент-вервер приложением ) , отвечающем за создание потоков и консоль . Для регистрации пользователя в системе диспетчер сеансов создаёт процесс Winlogon . Поскольку все перечисленные процессы - критически важны , smss ждёт освобождения их описателей бесконечно долго , если не заметит явного краха . Наконец smss создаёт порты LPC для отладки приложений . На этом его работа заканчивается .
Теперь загрузочный процесс продолжает Winlogon . Первым делом он регистрирует обект вернего уровня - свой рабочий стол и резервирует комбинацию клавиш Ctrl-Alt-Del ( user32.dll!RegisterHotKey ) . Потом логон создаёт обект WindowStation и загружает библиотеку msgina.dll , которая предоставляет интерфейс входа пользователя . Запускается services.exe - приложение служб и контрллёров . Services запускает службы PnP пользователя и Журнал событий , а также остальные системные службы , упакованные в DLL . Хостом для dll-служб является services.exe ( generic host process for win32 services ) . Для удобства службы делятся на несколько категорий и каждая висит на своём хосте . Поэтому в памяти около 5 похожих процессов ( но с раными точками входа ) . После успешной регистрации создаётся процесс lsass.exe , отвечающий за локальную аутентификацию пользователя , и userinit.exe , который заполняет раздел реестра HKCU . Далее Winlogon вызывает оболочку .
Проводник обрабатвает значения Run , !Run , RunOnce разделов HKCU\Software\Microsoft\Windows\CurrentVersion и HKLM\Software\Microsoft\Windows\Current Version если это не отключено ( HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\DisableLocalMachineRun , HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\DisableLocalMachineRunOnce тоже самое для HKCU ) . Автозагрузка таже находится в папке "Автозагрузка" пользователя .
Всё . Система загрузилась . |