MSDN によると、WM_ENDSESSION メッセージを使用して再起動またはシャットダウンが発生したかどうかを判断することはできません。
これを行う唯一の方法を見つけましたが、非常に見苦しく、Windows 2000 Server でのみ機能し、2008 Server では機能しません。
私が尋ねている理由は、Linux デーモンをシステム サービスとして Windows に移植している最中だからです。このデーモンは、再起動イベントとシステム シャットダウン イベントで異なる動作をします。
何らかの形で回答するのに役立つ場合は、プロジェクトでpywin32でpythonも使用しています。