1

ご存知のように、Windows イベント ログは、Vista 未満 (XP 以下) と Vista 以降では異なります。こちらのWindows イベント ログを参照してください。Vista では、すべてのイベント ログを取得する方法に関する API を理解できました。

Windows XP では、このサンプル コードを実行できます。そこに記入する必要がある2つのことは次のとおりです。

#define PROVIDER_NAME           L"MyEventProvider"
#define RESOURCE_DLL            L"<path>\\Provider.dll"

ただし、プロバイダー名とそのリソース dll をどこで取得するかという問題があります。

私が考えることができる 1 つの方法は、レジストリ キーの下にあるすべてのサブ キーを反復処理することです:安全

これらのサブキーから、プロバイダー名とその EventMessageFile を取得できました (一部のサブキーには EventMessageFile がなく、ParameterMessageFile があることがわかりました)。

これがこれを行う唯一の方法ですか?または、他のより良いアプローチはありますか?

4

1 に答える 1

2

WinAPI を使用している場合、私の知る限り、レジストリを反復処理することが唯一の方法です。はい、一部のプロバイダーには EventMessageFile がありません。これは正常です。たぶん、メッセージなしで挿入文字列をイベントログに配置するだけです(正確には言えません)。

しかし、.Net を使用できる場合は、優れたEventLog Classがあり、非常に優れたメソッドが多数提供されます。

于 2012-07-25T11:04:29.633 に答える