開発元 | Microsoft Windows |
---|---|
対応OS | Windows NT 3.1以降 |
種別 | 実行可能ファイル |
テンプレートを表示 |
Winlogonは、SAS(英語:Secure attention sequence)を処理[1]し、対話型ログオンセッションを管理するユーザーモードプロセスである[2][3]。
Winlogon.exe
はWindows起動後、以下の手順を追う。
1. ウィンドウステーションの作成
キーボードやマウス、モニターを利用可能にするため、ウィンドウステーション(\Sessions\1\Windows\WindowStations\WinSta0
)を作成する。この時点でWinlogon.exe
は、他のプロセスがこのステーションにアクセスできないよう、SYSTEM
のACEのみを含むセキュリティ記述子を付与する[3][1]。
2. デスクトップの作成
二つのデスクトップセッションを作成する。一つは、アプリケーションデスクトップ(\Sessions\1\Windows\WinSta0\Default
)と呼ばれ、実際にユーザーがアクセスすることのできるデスクトップである[3]。もう一つは、Winlogonデスクトップまたはセキュアデスクトップ(\Sessions\1\Windows\WinSta0\Winlogon
)と呼ばれ、資格情報ダイアログや既定でUACの昇格ダイアログを表示する。この時点でWinlogon以外のプロセスはこのウィンドウにアクセスすることはできない[3]。
3. LSASSとのALPC通信の確立
Winlogon.exe
はLsaRegisterLogonProcess
を使用して、ログオンやログオフ中にデータを交換したり、パスワードの管理をするため、LSASS(英語:Local Security Authority Subsystem Service, Lsass.exe)とALPC(英語:Advanced Local Procedure Call)通信を確立する[3]。
4. PRCメッセージサーバの登録
SASやログオフ、ワークステーションのロックの通知を受け取るために、RPCメッセージサーバを登録する[3]。
5. 次のプロセスの起動
次にWinlogon.exe
は、レジストリキーHKLM\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Userinit
に存在する、実行可能ファイル名が書かれたコンマ区切りの文字列データを参照し、そのプロセスを作成する(通常はUserinit.exe
)。
Userinit.exe
は起動すると、ユーザープロファイルを読み込み、HKCU\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Shell
、もしくは、HKLM\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Shell
の実行可能ファイル名が書かれた文字列データを参照し、そのプロセスを作成する(通常はexplorer.exe
)。その後、Userinit.exe
は終了するため、explorer.exe
は親プロセスを持たない[3]。