誰かが私のサーバにログオンすると、自動的にいくつかのタスクを実行するプログラムを書いてみたいと思います。このに関するWindowsサーバー2003/2008のユーザーログインを監視する方法は?
私の質問は以下のとおりです。
1) は私 目的のために/モニタを使用することができます 、ユーザーがログインした後、右に設定されていることを最後のログイン記録がありますか?そうでない場合は何かがあります 私は使用できますか?
2)常にこのような値を監視するには、 が最適です。
誰かが私のサーバにログオンすると、自動的にいくつかのタスクを実行するプログラムを書いてみたいと思います。このに関するWindowsサーバー2003/2008のユーザーログインを監視する方法は?
私の質問は以下のとおりです。
1) は私 目的のために/モニタを使用することができます 、ユーザーがログインした後、右に設定されていることを最後のログイン記録がありますか?そうでない場合は何かがあります 私は使用できますか?
2)常にこのような値を監視するには、 が最適です。
SERVICE_CONTROL_SESSIONCHANGEコントロールを受け入れるサービスを作成するのが最も良い方法です。
これにより、サービスコントロールハンドラは、ユーザーがログオン、ログオフ、セッションのロック、およびその他のさまざまなオプションを実行するたびにコントロールを受け取ることができます。リンクブローでもっと情報を探してください。
これは、次のように、dwControlsAcceptedにSERVICE_ACCEPT_SESSIONCHANGEフラグを持ってサービスを作成することによって行われます:
続くSERVICE_STATUS ss;
...
ss.dwControlsAccepted |= SERVICE_ACCEPT_SESSIONCHANGE;
:これは窓があなたにSERVICE_CONTROL_SESSIONCHANGEコントロールを送信することができます
// This lets the service accept the session change ctrls
// The service handle here is received by calling RegisterServiceCtrlHandler
SetServiceStatus(hServiceHandle,
&ss);
HandlerEx関数は次のようになります。
DWORD WINAPI HandlerEx(DWORD dwControl,
DWORD dwEventType,
LPVOID lpEventData,
LPVOID lpContext)
{
switch (dwControl)
{
...// Regular control handling
case (SERVICE_CONTROL_SESSIONCHANGE):
switch(dwEventType)
{
case(WTS_SESSION_LOGON):
// Handle logon
break;
case(WTS_SESSION_LOCK):
// Handle lock
break;
...
}
break;
...
}
}
WM_WTSSESSION_CHANGEから受け取ることができるさまざまなセッション変更通知をすべて読むことができます。必要な通知は、説明のwParam部分にあります。
これは、とにかくその要点です。 handlerex関数の詳細は、HandlerEx、一般的なサービスの詳細についてはService Functionsを参照してください。 ServiceMain関数RegisterServiceCtrlHandler関数を読んだり、MSDNのページに載っている例を読むことをお勧めします。彼らはスーパーに役立ちます。
幸運を祈る!
管理タスクでは、すべての管理者がこれを行う方法を知っている必要があります。頼む。 – leppie