2012-03-15 11 views
2

ユーザーが複数のユーザーを持つコンピュータにログインしたときとユーザーがログアウトしたとき(またはコンピュータをロックしたとき)を確認するWindowsサービスを作成する必要があります。この情報は、ユーザーがログインしている時間(私はアイドル時間は気にしません)を計算します。この最後の部分を直接取得することができます。 (ユーザーがコードを引っ張っても気にしない。サービスは現在のユーザーをポーリングしてこの情報を記録するので、次回起動時にコンピュータがオフになったかどうかを知ることができる。正確)。ログインしている現在のユーザーとログに記録されたユーザーを確認する方法

ユーザーが一定の制限時間を超えたときにユーザーを追い出すために、これを知る必要があります。

私はC#またはデルファイのいずれかを使用することになり、私は、この情報を取得するために見ているAPIの私を指摘していただければと思います。それは子供のコンピュータの使用状況を確認するために目標と同じよう

その周りのソフトウェアがすでにありますが、これをチェックし、私はそのようなことが必要ですが、私は、時計の子供たちよりも、別の目的のためにカスタマイズします。

実際には、ユーザーがいつログインしたかを知る必要があるかもしれません。残りの部分は自分で計算します。

+0

また、電源コードを引き抜く人のアカウントに入る必要があります。 –

+1

ログインが成功するように監査をオンにします。その後、サービスに適切なイベントのイベントログを見させてください。 – JamieSee

答えて

2

情報の発信元はSECURITY_LOGON_SESSION_DATAです。 LsaGetLogonSessionDataまたはLsaEnumerateLogonSessionsを使用できます。スレッド(またはユーザーログオントークン)のセッションIDを取得するには、GetTokenInformationTokenSessionIdをパラメータとして使用できます。

the old answerには、小さなデモのソースコードがあります。

あなたはモニターユーザのログインとログオフが必要な場合は、私はあなたの窓のサービスで(System Event Notification Service (SENS)の参照)ISensLogon2コールバックインターフェイスを実装するために、あなたをお勧めします。 C#で使用する予定の場合は、the articleをお勧めします。

+0

ありがとう、非常に役立つ記事も。 –

+0

@CraigStevenson:ようこそ! – Oleg

0

この情報を取得するには、おそらくWindowsのイベントログを調べる必要があります。エリックフィッツジェラルドはこのことのいくつかについて語っていますhere。また、彼はhereにリンクしており、「LogOff」イベントにどのように頼っているのかが信頼できないことに注意してください。これは、パワーコードを引き出している人々について、上記の私のコメントを述べています。

記事はまた、ワークステーションがロックされているとして関与の特異性、などに言及...

3

はのStartTime、ログオンIDとLogonTypeプロパティをチェックし、Win32_LogonSession WMIクラスを試してみてください。また、Win32_Sessionクラスもご覧ください。

関連する問題