EventLog 出力 で 使う EventSource を 登録 & 解除 する方法

0 件のコメント

Windows の イベントログ を出力しようと思うと、あらかじめ "イベントソース" を登録しておかなくてはいけません。 ここでは、その "イベントソース" の登録場所と具体的な方法をまとめます。

目次

レジストリ登録する場所と内容

イベントソースに関する情報を保存する場所は、レジストリの以下の場所 (AppName) になります。

HKEY_LOCAL_MACHINE
  SYSTEM
    Services
      Eventlog
        Application
          AppName
        Security
        System

上述の場所に保存される、イベントソースに関する情報は以下の通りになります。 "必須"は、私がたぶんそうだと思う…というものなので参考にしていただければと思います。。

キー 必須
(規定)   なし。
CategoryCount   REG_DWORD サポートしているイベントカテゴリ数。
CategoryMessageFile   REG_SZ / REG_EXPAND_SZ カテゴリメッセージファイルへのパス。
EventMessageFile REG_SZ / REG_EXPAND_SZ 1つ以上のメッセージファイルへのパス。
セミコロン区切りで複数指定可能。
ParameterMessageFile   REG_SZ / REG_EXPAND_SZ パラメータメッセージファイルへのパス。
TypeSupported REG_DWORD サポートするイベントログタイプのビットマスク。
EVENTLOG_ERROR_TYPE
(0x0001)
EVENTLOG_WARNING_TYPE
(0x0002)
EVENTLOG_INFORMATION_TYPE
(0x0004)
EVENTLOG_AUDIT_SUCCESS
(0x0008)
EVENTLOG_AUDIT_FAILURE
(0x0010)

レジストリファイル(.regファイル)で追加、削除

イベントソース名「SampleApplication」を追加、削除するレジストリファイル(.regファイル)のサンプルコードを以下に載せます。

イベントソース を レジストリファイル(.regファイル) で追加

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SampleApplication]
"EventMessageFile"="%SystemRoot%\\System32\\mscoree.dll"
"TypesSupported"=dword:00000007

イベントソースを レジストリファイル(.regファイル) で削除

Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\SampleApplication]

バッチファイル(.batファイル)で追加、削除

レジストリファイルと同様にイベントソース名「SampleApplication」を追加、削除するレジストリファイル(.regファイル)のサンプルコードを以下に載せます。 バッチを用いて追加または削除する場合、バッチを管理者で実行する必要がある点に注意してください。

イベントソース を バッチファイル(.batファイル) で追加

@echo off
cd /d "%~dp0"

rem イベントソース名
set APP_NAME=SampleApplication

rem 完全キー名
set ROOT_KEY=HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\%APP_NAME%

rem キーおよびサブキーを追加
reg add "%ROOT_KEY%" /v EventMessageFile /t REG_EXPAND_SZ /d "%%SystemRoot%%\System32\mscoree.dll" /f
reg add "%ROOT_KEY%" /v TypesSupported /t REG_DWORD /d 7 /f

イベントソース を バッチファイル(.batファイル) で削除

@echo off
cd /d "%~dp0"

rem イベントソース名
set APP_NAME=SampleApplication

rem 完全キー名
set ROOT_KEY=HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Application\%APP_NAME%

rem キーごと削除を実行
reg delete "%ROOT_KEY%" /f

参考記事