• ベストアンサー

Windowsのユーザログイン/ログオフのイベント検知方法

こんにちは。 只今あるサービスプログラムを作っているのですが、 Windowsのユーザログイン、ログオフの検知が必要になり、 どうやって知ることが出来るのかで悩んでおります。 ログオフした状態なのか、 なんらかのユーザがログイン中なのかを知ることが出来るだけでも十分です。 ログインしているユーザがサービスプログラムから分かればなおうれしいのですが、どなたかご存知ないでしょうか? どうぞよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.2

2000/XPでは「マイコンピュータ」「管理」で 「コンピュータの構成」「Windowsの設定」「ローカルポリシー」「監査ポリシー」の中に監査項目の設定があります。 問題はこれをプログラムから読み込む方ですが、「イベントビューア」で設定されている「*.evt」というファイルに逐次書き込まれるので、これを解読することになりますが、バイナリファイルなので構造を解読してみる必要があります。このへんはやったことがありません。 nbtstatの方はプログラムの子プロセスで実行させてその出力をファイルに書き出せばよろしいかと思います。 nbtstat -A (IP) > comstatus 問題はユーザ名と他のbios名の区別がつけられるのかどうかということです。とりあえず必ず一番最後に現れます。

Murphy
質問者

お礼

ご回答、ご丁寧にありがとうございました。

その他の回答 (1)

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

WindowsNT/2000/XP であれば監査を設定すればイベントビューアのセキュリティタブに表示されると思いますが、Windows9x系ではログイン後に何かのプロセスが自動起動するように設定して、そのプロセスが起動しているかどうかで判定するしかないように思います。 マイクロソフトネットワークにログインする場合にはnbtstatコマンドでNetBIOS名としてユーザ名を知ることができます。

参考URL:
http://www.eva.hi-ho.ne.jp/shinnai/Network/Nbtstat/Nbtstat.html
Murphy
質問者

お礼

返信ありがとうございます。 ヒントになりそうなご回答を頂きましたが、 イベントビューアのタブというのは、プログラムから読取、確認出来るものなのでしょうか? また、これを表示する為の監査の設定はインストーラで自動に出来るものなのでそうか?この仕組みを無効にされても困りますので、実現は少し難しいかもしれません。 それと、nbtstatコマンド等の出力結果ってプログラム上で受け取れるのでしょうか? 未経験なのでよく分からないのですが、恐縮ではありますが、出来ましたらご教授お願い致します。