2010年10月20日水曜日

ワークステーション(デスクトップ)のロックを検知

たまーにクライアントやターミナル環境を監査するようなAPが必要になった時に、ログイン・ログアウトと同じくらいロックしたことを検知したいときがあるんだよねぇ。

マネージでやる場合、こんな感じ。

Imports Microsoft.Win32

(中略)

AddHandler SystemEvents.SessionSwitch, AddressOf SessionSwitch

(中略)

Private Sub SessionSwitch(ByVal sender As Object, ByVal e As SessionSwitchEventArgs)
    Try
        Select Case
e.Reason
             Case SessionSwitchReason.SessionLock
                Debug.WriteLine("SessionLock")
           Case SessionSwitchReason.SessionUnlock
                Debug.WriteLine("SessionUnLock")
       End Select
    Catch
ex As Exception

    End Try
End Sub

大体こんな感じで、静的クラスの Microsoft.Win32.SystemEvents クラスの SessionSwitch イベントを利用してあげればOK。

もっと楽にやろうとするなら・・・System.ServiceProcess.ServiceBase を継承して、ってトコだろうなぁ。

0 件のコメント:

コメントを投稿