セッション 0 で実行されている Windows サービスからログオフ イベントをリッスンすることに興味があります。
- また、ログオフしているユーザー (セッション ID) も把握しています。
- ここでは、ログオフ イベントではなく、キャンセル可能なログオフ イベントについて話していることに注意してください。
どのユーザーがログオフしているかを調べる方法 - SessionEndingEventArgsからセッション ID を取得しますか?
protected override void OnStart(string[] args)
{
SystemEvents.SessionEnding += SystemEvents_SessionEnding;
}
private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
// SessionEndingEventArgs does not contain SID
// or other user identifying info?
}
[そして、Windows サービスが実際に SessionEnding イベントをキャプチャできるかどうかはテストしていません]
または、 SessionChangeDescriptionを使用して、ログオフしようとしているユーザーを識別できますか?
public ServiceApp()
{
CanHandleSessionChangeEvent = true;
}
protected override void OnSessionChange(SessionChangeDescription changeDescription)
{
// Although changeDescription has SessionId property
// I'm not sure it has the equivalent of session ending event?
base.OnSessionChange(changeDescription);
}
- つまり、SessionLogoff では、ユーザーはすでにログオフしています
- ConsoleDisconnectなど、他のイベントがいつ発生するかわかり ませんか?
他のイベント ソース ?
- または、 Cassiaはユーザー アカウント情報を含むそのようなイベントを提供しますか?
- または、どこかの WMI から取得できますか?
- または、Win32 API を直接使用しますか?