イベントログ読み込み

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mufg

イベントログ読み込み

#1

投稿記事 by mufg » 15年前

お世話になります。
イベントログの読み込み、表示アプリをつくっていて、2003server、XPなどでは動いていたのですが、
先日2008serverにポーティングしようとおもったら、


RegOpenKeyEx 関数で
"SYSTEM\\CurrentControlSet\\Services\\EventLog\\Security" 
のレジストリキーをオープンするところで、エラーが帰ってきてしまいました。

2008serverの場合、レジストリの場所がまったく異なるのでしょうか。

ご存知の方おられましたら、ご教示願います。

へろりくしょん

Re:イベントログ読み込み

#2

投稿記事 by へろりくしょん » 15年前

Windows server 2008 については全く分かりませんが。

"SYSTEM\\CurrentControlSet\\Services\\EventLog\\Security"のキーが存在しないのは確かな事なのですか?

一度GetLastError() にお伺いを立てて見ることをお勧めします。

YuO

Re:イベントログ読み込み

#3

投稿記事 by YuO » 15年前

なぜ,イベントログの読み込みにレジストリが関係するのか解りませんが……。

まずは,
MSDN: Windows Events (Windows)
http://msdn.microsoft.com/en-us/library/aa964766.aspx
の,
MSDN: Event Logging (Windows)
http://msdn.microsoft.com/en-us/library/aa363652.aspx

MSDN: Windows Event Log (Windows)
http://msdn.microsoft.com/en-us/library/aa385780.aspx
にあるAPIを使うという正規の方法で,読み込めないかどうかを確認してはどうでしょうか。

mila

Re:イベントログ読み込み

#4

投稿記事 by mila » 15年前

RegOpenKeyEx関数でエラーが発生したときの詳細な情報はGetLastError関数では得られません。
RegOpenKeyEx関数の戻り値を確認してみてください。

へろりくしょん

Re:イベントログ読み込み

#5

投稿記事 by へろりくしょん » 15年前

>RegOpenKeyEx関数でエラーが発生したときの詳細な情報はGetLastError関数では得られません。

MSDNを読み返しました。 失礼いたしました。

ikara

Re:イベントログ読み込み

#6

投稿記事 by ikara » 15年前

勘違いでしたら申し訳ないのですが、
もしや下記サンプルを参考に作成していますか?

http://nienie.com/~masapico/api_sample_ ... g02_c.html

Win2008ではアプリケーションログ、システムログの取得は可能なのですが、
セキュリティのもののみ、メッセージフォーマットが保存されているdllのパスが
入っているキーがみつからないようですね。

本来ならEventMessageFileというキーに登録されているはずなのですが…。

※XPや2003では下記キーのパスが使用可能のようです。 
SYSTEM\\CurrentControlSet\\Services\\EventLog\\Security\\Security\\EventMessageFile

何か分かりましたら改めてコメントします。

APIの仕様より、win2008のレジストリキーの仕様を調べたほうがいいかもしれません。

ikara

Re:イベントログ読み込み

#7

投稿記事 by ikara » 15年前

解決しましたので、詳細です。

まず、イベントログのメッセージフォーマットDLLの場所ですが、
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\WINEVT\\Publishers\\"

上記レジストリに存在する{で始まるキーを全てをリストアップします。
各キーの既定キーがEVENTLOGRECORD構造体内のソース名と一致しますので、
それを元に欲しいキーを確定します。

既定キー以外にMessageFileNameというキーがあるのですが、
これの値にメッセージフォーマットDLLへのパスが入っています。

あとはWinXPなどと同様の機構でイベントログのメッセージフォーマットの取得が出来ます。

ただし、vistaやwin2008serverではマイクロソフト特有のバグがあり、
sp1ではセキュリティログのメッセージフォーマット問い合わせが動作しません。

sp2を当てると取得できるようになります。

ikara

Re:イベントログ読み込み

#8

投稿記事 by ikara » 15年前

解決済みにしておきます。

閉鎖

“C言語何でも質問掲示板” へ戻る