お世話になります。
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:イベントログの書き込み先
MSDNを覗いてきたら、RegisterEventSourceの第二引数は下記のようになってました。
lpSourceName
登録済みハンドルを取得するイベントソースの名前を表す NULL で終わる文字列へのポインタを指定します。この名前は、レジストリの EventLog キーに登録されているログファイルエントリのサブキーでなければなりません。たとえば、レジストリに次のキーがある場合は、WinApp が有効なイベントログの名前です。
HKEY_LOCAL_MACHINE
System
CurrentControlSet
Services
EventLog
Application
WinApp
Security
System
戻り値
なのでレジストリを覗いてみたら何か分かるかもしれませんよ
lpSourceName
登録済みハンドルを取得するイベントソースの名前を表す NULL で終わる文字列へのポインタを指定します。この名前は、レジストリの EventLog キーに登録されているログファイルエントリのサブキーでなければなりません。たとえば、レジストリに次のキーがある場合は、WinApp が有効なイベントログの名前です。
HKEY_LOCAL_MACHINE
System
CurrentControlSet
Services
EventLog
Application
WinApp
Security
System
戻り値
なのでレジストリを覗いてみたら何か分かるかもしれませんよ