ページ 11

イベントログの書き込み先

Posted: 2010年7月22日(木) 19:11
by event
お世話になります。

C言語で、イベントログにメッセージを出力しようとして
以下の方法で書き込みました。

hEventLog = RegisterEventSource(NULL, exe);
if(hEventLog == NULL){
printf("event log can not open.\n");
return (0);
}

bResult = ReportEvent(
hEventLog,
type,
0,
ID,
NULL,
1,
0,
&module,
NULL);

DeregisterEventSource(hEventLog);


しかし、不思議なことがおきました。
自分のXP端末や、社内のWindowsServer2003などでは、
アプリケーションの種類のイベントログに出力されたのですが、
お客様先のWindowsServer2003で実行したところ、
なぜかシステムの種類のイベントログに出力されてしまいました。

このEXEだけを呼ぶバッチを作り実行したところ、
アプリケーションに出力されるのですが、
他の日次で稼動するバッチに組み込んで実行させたところ
システムに出力されてしまいました。

この、状況によってアプリケーションやシステムに出力される
要因(環境変数?レジストリ?)をご存知の方、ご教示いただけないでしょうか。


よろしくお願いいたします。

Re:イベントログの書き込み先

Posted: 2010年7月22日(木) 20:22
by シエル
MSDNを覗いてきたら、RegisterEventSourceの第二引数は下記のようになってました。


lpSourceName
登録済みハンドルを取得するイベントソースの名前を表す NULL で終わる文字列へのポインタを指定します。この名前は、レジストリの EventLog キーに登録されているログファイルエントリのサブキーでなければなりません。たとえば、レジストリに次のキーがある場合は、WinApp が有効なイベントログの名前です。
HKEY_LOCAL_MACHINE

System

CurrentControlSet

Services

EventLog

Application

WinApp

Security

System

戻り値



なのでレジストリを覗いてみたら何か分かるかもしれませんよ