問題タブ [readeventlog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
8120 参照

event-log - EventMessageFile なしで Windows イベント ログを読み取る方法は?

Windows イベント ログを読み取るコードがあります。OpenEventLog、ReadEventLog を使用して、イベント ソースとイベント ID を取得します。次に、以下のソースを検索します。

キーを使用して、リストされている内容に従って適切な DLL をロードしEventMessageFile、最後に を使用FormatMessageしてイベント文字列をメッセージ DLL コンテンツとマージし、最終的なイベント メッセージ テキストを取得します。これは推奨される方法であり、少し面倒ですが、うまく機能します。

まで...ソースを調べてみると、EventMessageFileではなく、ProvideGuidエントリがあることがわかりました。これは新しい方法のようです (Vista と Windows 2008 で表示されます)。うーん -- メッセージ テキストを検索し、データ文字列をマージするために FormatMessage に渡すものは何もありません

:(

レジストリで GUID を検索すると、他のファイル (HTTP ソースの場合は http.sys) への参照につながりますが、完全なメッセージ テキストを取得することはできません。EvtOpenSessionこれらのAPIを使用する必要がありますか? EVENTLOGRECORD*への呼び出しからReadEventLog、およびサポートされていない Windows 2003 でソフトウェアを実行する必要があるという事実EvtOpenSession(Vista および Windows 2008 でのみ使用可能) があるので、そうしないことを望んでいます。注: Vista の一部のソースには ProviderGUID があり、その他のソースには EventMessageFile があるため、古い方法も引き続き実行できます。

したがって、私が求めているのは、ProviderGuid を見て、完全なイベント ログ メッセージ テキストを表示するために FormatMessage に渡す必要がある DLL を取得する方法です。

ご意見ありがとうございます

0 投票する
3 に答える
648 参照

ruby-on-rails - Rails アプリケーションでの検索結果のログ記録

アイテムが検索またはリスト ページに表示される回数をログに記録して計算することに関心があります。1 日あたり 50,000 のユニークな訪問者がいる場合、1 日あたり 300 万から 400 万の「インプレッション」を生み出すことができると予想しています。

このデータをリアルタイムで読み取る必要はありませんが、毎日の合計を生成し、傾向などを分析できるようにしたいと考えています。ビジネス分析ツールと同様です。

ページがレンダリングされた後、Ajax 投稿でこれを行う予定です。これにより、結果がキャッシュされている場合でも結果をカウントできるようになります。これは、ページごとに 1 つの投稿で行うことができ、コンマで区切られた ID のリストとページ上の位置を送信できます。

これについて、よくある初心者の間違いを避けるのに役立つ、ある種のデザインパターン/宝石/ブログ投稿があることを願っています. また、ログの記録やログの読み取りの経験もあまりありません。

私の現在の戦略 - ログ ファイルにイベントを書き込む何かを作成し、1 日の終わりに結果を集計して結果を mysql に戻すバックグラウンド ジョブを作成します。

0 投票する
1 に答える
325 参照

c++ - なぜ私のベクトルは謎のクリア?

C++ で Windows EventLog ファイル (.evt) からデータを読み取って保存するプログラムを作成しています。私は呼び出しOpenBackupEventLog(ServerName, FileName)ReadEventLog(...)を使用しています。これも使用: PEVENTLOGRECORD

とにかく、すべてのコードを提供しなくても、基本的な考え方は次のとおり
です。 1. OpenBackupEventLog() を使用して .evt ファイルへのハンドルを取得し、ファイル名を渡します。
2. 次に、ReadEventLog() を使用して、不明な数の EventLog メッセージでバッファをいっぱいにします。
3. バッファをトラバースし、各メッセージをベクトルに追加します
。 4. ファイルの最後に到達するまで、バッファを埋め続けます (ステップ 2 と 3 を繰り返します)。

ベクトルを埋めるための私のコードは次のとおりです。

とにかく、これを実行するたびに、ファイル内のすべての EventLog が取得され、ベクターには必要なものがすべて含まれます。しかし、次の行が表示されるとすぐに:

が呼び出されて true を返す (別名 ReadEventLog() は false を返す) と、ベクター内のすべてのフィールドがゼロに設定されます。

ベクトルには正しい数の要素が含まれますが、PEVENTLOGRECORD 構造体のすべてのフィールドがゼロになっているだけです。

より良いデバッグ経験を持つ人は何か考えがありますか?

ありがとう。

編集:Michael Burr の提案に従ってコードを更新しました。上記のコードにより、私が抱えていた元の問題が解消されました。

編集 2: Michael Burr の他の提案への対応: EVENTLOGRECORD の変数部分のため、EVENTLOGRECORD に加えて、関心のある他のいくつかの変数を持つカスタム構造体を作成します。

変数部分を取り出すのは簡単な作業ではありませんが、開始するための優れた例を次に示します: イベント情報のクエリ

0 投票する
3 に答える
2119 参照

c# - C# でイベント ログ エントリを一意に識別する

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

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

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

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

前もって感謝します

0 投票する
0 に答える
584 参照

c# - Windows 7 クライアントのイベント ログにネットワーク情報がない (イベント ID 4625)

私はイベントログを表示するアプリケーションを持っていますSecurity-> AuditFailurec#で、EventLogEntryクラスのMessageプロパティでそれを読んでいます、私はそれをテストしていますWindow server 2008 R2

Window Server 2008 R2またはその後のようなマシンから生成された障害イベント ログは、Windows XPネットワーク情報セクションの下に IP アドレスとポート番号を生成しますが、Windows 7マシンに対して生成されたログには IP アドレスとポート番号が含まれません。ウィンドウ 7 マシンによって生成されたログのスクリーン ショット

0 投票する
1 に答える
960 参照

c# - ローカル イベント ログを読んでいますか?

ここでは、このコードを使用して C# を使用してローカル システム イベント ログを読み取ろうとしています。

それはうまく機能していますが、問題は変数eventLogTextでSystem.Diagnostics.EventLogEntryのみを繰り返し取得することです。これは非常に一般的な間違いかもしれませんが、c#も初めてなのでどうすればよいかわかりませんプログラミングとしても。

次に、システムが管理者アカウントを使用してログインしていない場合、イベントログを読み取ると例外またはエラーが発生し、それが解決策になるかどうかを知りたいですか?

助けが必要です。よろしくお願いします。

0 投票する
1 に答える
938 参照

c++ - 再起動後に Windows で BSOD が発生したことをプログラムで検出するにはどうすればよいですか?

これが可能かどうかはわかりませんが、BSODの直後に再起動したときにBSODが発生したことをプログラムで検出する方法はありますか?

BSOD は、何らかの理由またはすべての理由で発生する可能性がありますが、問題ではありません。ダンプファイルを確認できることは知っていますが、ユーザーがその設定をオフにすると、ダンプは作成されません。また、ダンプ ファイルの保存先のパスを変更することもできます。これにより、検出が信頼できなくなります。

Windows のいずれかまたはすべてのバージョンが適しています。各OSで同じようにチェックインできればいいのですが、OS固有のものであればそれでもいいと思います。

0 投票する
1 に答える
3624 参照

c# - EventLogQuery を使用して Eventdata を照会するにはどうすればよいですか?

セキュリティ イベント ログを見て、最も頻繁に使用するマシンのユーザーを特定しようとしています。4624 イベント ID の使用を検討していますが、クエリで EventData から何かを追加する方法がわかりません。4624 イベントから標準データを取得できますが、クエリしようとしているのは、logontype が 7 であり、targetusername の詳細を読み取ることができるイベントです。

ありがとう!