3

背景として、複数のマシンからの Windows セキュリティ イベント ログ エントリを単一の SQL テーブルに統合して、レポートできるようにしようとしています。これはすべて C# で機能します。

しかし、このイベントを以前に見たことがあるかどうかをより効率的に判断する方法が必要なので、以前にすべてのエントリを見たことがあるかどうかを確認するためにデータベースで複雑な検索を行う必要はありません。

一度に複数のイベントが生成される可能性があるため、重複を回避する唯一の方法は、イベント ID、生成時刻、マシン名、場合によってはパラメーターを確認することです。

.Net Framework は、このプロセスを簡素化するために使用できる一意の識別子の形式を公開していますか?

前もって感謝します

4

3 に答える 3

1

使用しているC#メソッドはわかりませんが、使用できるレコード番号を取得できます(たとえば、コンピューター+ログ+レコード番号)。他のAPIについてはよくわかりませんが、ManagementObjectSearcher(別名WMI)を介してC#のレコード番号にアクセスできることは知っています。

win32APIを介してレコード番号を取得することもできます。

古いAPI:EVENTLOGRECORD構造

新しいAPI:EventRecordID(SystemPropertiesType)要素

于 2011-08-23T23:06:38.297 に答える
1

OK、あなたの助けを借りてそれを解決しました。タイムスタンプ、イベント ID、マシン名を取得し、その MD5 ハッシュを作成します。シンプルで簡単に索引付けできます。パフォーマンスも大幅にアップしています。

于 2011-08-25T04:29:48.557 に答える
0

残念ながら、コンピュータ、イベント ソース、イベント ID、およびタイムスタンプを組み合わせたキーを取得して一意に一致させることしかできません。イベントフレームワーク、AFAIKにはグローバルに一意のIDはありません。

于 2011-08-23T08:53:55.637 に答える