0

Windows XP と Windows 7 の両方で、イベント ログを CSV ファイルに保存したいと考えています。

Windows XP では、手動で行うことができます。「イベント ビューア」(EVENTVWRまたはEVENTVWR.MSCコマンド ライン) を開き、たとえば、「アプリケーション」ログを右クリックして、コンテキスト メニュー コマンドの「ログ ファイルに名前を付けて保存」を選択します。および「CSV(カンマ区切り)(* .csv)」で、最終的にログがファイルに保存されます。

このファイルには、すべてのログ情報が含まれています。すべてのイベントの完全な形式のメッセージが含まれています。

単にコンテキスト メニュー コマンドの [リストのエクスポート] を起動すると、代わりに のようなイベントの「メタデータ」の単なるリストが取得されますType, Date, Time, Source, Category, Event, User, Computer

Windows XP で使用可能な API、つまりEvent Logging Functions (Windows)を参照したところ、次のことがわかりました。

  1. BackupEventLogでは、バックアップ ファイルの形式を選択できません。つまり、バイナリ形式で保存されますが、これは役に立ちません。
  2. ReadEventLog構造を介してメタデータEVENTLOGRECORDと、多くの作業を伴う完全にフォーマットされたメッセージを取得するための指示のみを提供します。

イベント ID は、ソース名と言語 ID とともに、イベントをより詳細に説明する文字列を識別します。文字列は置換文字列として使用され、メッセージ文字列にマージされて完全なメッセージが作成されます。メッセージ文字列は、レジストリのソース エントリで指定されたメッセージ ファイルに含まれています。メッセージ ファイルから適切なメッセージ文字列を取得するには、メッセージ ファイルを LoadLibrary 関数で読み込み、FormatMessage 関数を使用します。

さて、それは大変な作業です:sourceレジストリに移動して (どこで? 可能性のある場所が複数あるのではないかと心配しています...)、リソース ファイル名を見つけ、 でファイルをロードしLoadLibrary、メッセージを でフォーマットしますFormatMessage

何か不足していますか?ショートカットはありますか?Microsoft は、ログを CSV 形式でバックアップするための単純な API を提供してくれませんか? 結局、彼らはすでに内部にコードを書いていましたeventvwr...

今は少しがっかりしており、Windows Vista 以降に利用可能なEvt*API ( Windows イベント ログ機能 (Windows) ) を参照していませんでした。

4

0 に答える 0