C# アプリで Windows セッションのロック、ロック解除、ログオン、ログオフのイベントを検出する方法
デスクトップアプリやコンソールアプリでは SystemEvents.SessionSwitch を使い、Windows サービスでは OnSessionChange をオーバーライドし、あるいは WM_WTSSESSION_CHANGE を自分でフックします。3 つすべての .NET 10 コード、隠れた '.NET System Events' スレッド、サービスではログオンが見えるのにデスクトップアプリでは見えない理由、順序が入れ替わる通知、WTSQuerySessionInformation で現在のロック状態を問い合わせる方法を解説します。