Skip to content

8. User Session & Shell (winlogon.exe, userinit.exe, explorer.exe) ​

Финальный этап загрузки Windows это создание интерактивной сессии пользователя (Сессия 1+), аутентификация через LSASS, загрузка профиля и запуск графической оболочки explorer.exe.


8.1 Архитектурный pipeline входа в систему ​

[ smss.exe (Session 1) ]
           │
           ▼
   [ winlogon.exe ]
           ├── Инициализация десктопов Winlogon (экран входа) и Default (рабочий стол)
           ├── Запуск LogonUI.exe -> Credential Providers (Пароль, PIN, Windows Hello)
           │      │
           │      ▼ (Аутентификация через LSASS / LsaLogonUser)
           │
           ├── Загрузка профиля пользователя (NTUSER.DAT -> HKEY_CURRENT_USER)
           │
           └── Запуск процесса Userinit (из реестра: Userinit = "userinit.exe,")
                     │
                     ▼
             [ userinit.exe ]
                      ├── Выполнение логон-скриптов и групповых политик (GPO)
                      ├── Восстановление сетевых дисков
                      │
                      └── Запуск оболочки Shell (реестр: Shell = "explorer.exe")
                                │
                                ▼
                        [ explorer.exe ]
                                ├── Создание класса окна "Shell_TrayWnd" (Панель задач)
                                ├── Создание окна "Progman" (Рабочий стол)
                                ├── Регистрация системного трея и меню Пуск
                                └── Запуск приложений автозагрузки (Run / Startup)

8.2 Декомпилированный C-код функций Winlogon, Userinit и Explorer ​

Целевая сборка: Windows 10 22H2 x64 (Build 10.0.19045.2965). Имена внутренних функций и RVA-адреса зависят от версии сборки.
Конвенция вызовов (x64 ABI): Аннотации конвенций вызовов (__fastcall, __stdcall, __cdecl) воспроизводят декораторы типов декомпилятора Hex-Rays / IDA Pro. В архитектуре Windows x64 действует единый системный Microsoft x64 ABI (передача параметров через RCX, RDX, R8, R9, выделение Shadow Space).


1. Диспетчер входа: WinMain (winlogon.exe) ​

WinMainwinlogon.exe
IRQL: Ring 3 (Win32)Logon Session OrchestratorInternal
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
Главная функция `winlogon.exe`. Создает оконные станции, защищенный десктоп входа, перехватывает комбинацию SAS (Ctrl+Alt+Del), стартует `LogonUI.exe` и после успешного входа передает управление `userinit.exe`.

2. Инициализатор пользователя: WinMain / ExecProcesses (userinit.exe) ​

WinMainuserinit.exe
IRQL: Ring 3 (Win32)User Environment SetupExported
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
Кем вызывается:winlogon.exe
Главная функция `userinit.exe`. Выполняет логон-скрипты через `RunLogonScript`, настраивает переменные окружения, считывает значение `Shell` из `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon` и через `ExecProcesses` / `ExecApplication` запускает графическую оболочку `explorer.exe`, после чего процесс `userinit.exe` завершается.

3. Оболочка Windows: WinMain (explorer.exe) ​

WinMainexplorer.exe
IRQL: Ring 3 (Win32)Desktop & Shell InitializationExported
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
Главная точка входа графической оболочки Windows. Регистрирует системные оконные классы `Shell_TrayWnd` (Панель задач) и `Progman` (Рабочий стол), поднимает трей, системные меню и запускает программы автозагрузки.

8.3 Итог: Система полностью загружена ​

С момента подачи питания до появления рабочего стола управление было последовательно передано по цепочке:

UEFI Firmware⟶bootmgfw.efi⟶winload.efi⟶ntoskrnl.exe⟶smss.exe⟶wininit.exe⟶winlogon.exe⟶explorer.exe

Вы можете изучить:

Interactive documentation of Windows NT (Build 10.0.19045.2965 x64) • Source Code