9

アプリケーションには、致命的ではないエラーが発生し、アプリケーションが回復する特定の状況があります。

アイテムを選択リストに入力する際に​​、一部のインポート可能なアイテムを正しく識別できない例。エラーによってアプリがクラッシュすることはありませんが、一部のアイテムの読み込みに失敗したことがユーザーに警告されます。

この場合、エラーはアプリケーション イベント ログに警告として記録されます。アプリが回復する致命的ではないエラーですが、イベント ログに記録することで、必要に応じて元のエラーを確認できます。

私たちの問題は、ソフトウェアがパワー ユーザー アカウントでインストールできる必要があることです。管理者アカウントではないため、アプリケーションのカスタム イベント ソースを作成することはできません。

その目的は、代わりに「アプリケーション」イベント ソース (既に存在するアプリケーション イベント ログに表示される) にエラーを書き込むことです。ただし、これを行うと、次のようなテキストも含まれます。

ソース アプリケーションからのイベント ID 0 の説明が見つかりません。このイベントを発生させるコンポーネントがローカル コンピューターにインストールされていないか、インストールが破損しています。コンポーネントをローカル コンピューターにインストールまたは修復できます。

これは、書き込み時に EventID が 0 であるためです。このアプローチは仕事を成し遂げますが、もっと良い方法はありますか? アプリからのものであることを示すために、アプリケーション イベント ソースの EventID を指定する管理者以外の方法はありますか?

4

2 に答える 2

0

「ソース アプリケーションからのイベント ID 0 の説明が見つかりません」というエラーが表示されます。このイベントを発生させるコンポーネントがローカル コンピューターにインストールされていないか、インストールが破損しています。コンポーネントをローカル コンピューターにインストールまたは修復できます。これは、アプリケーション ソースの登録済みイベント メッセージ ファイルにイベント ID 0 のエントリがないためです。表示されるメッセージは、イベント メッセージ ファイルからメッセージ ID のテンプレートを取得し、イベント ペイロードでフォーマットした結果です。

一般に、所有していないソースをハイジャックすることはお勧めしません。これらのイベントを消費する人は誰でも、イベントが何を意味し、どのような情報を運ぶかについて特定の期待を持っています。

アプリケーションイベントソースのEventIDを指定して、それがアプリからのものであることを示す管理者以外の方法はありますか? 、イベント ID の指定は何を意味すると思いますか? ソース、イベントの発生元を決定するものです。

編集:

そのソースにはイベント メッセージ ファイルが登録されていないため、0 以外のイベント ID を提供するかどうかに関係なく、イベント ビューアでエラーが発生します。たとえそうであったとしても、メッセージ ファイルにエントリを持つイベント ID を使用するか (イベントのコンシューマを混乱させる)、エントリを持たないイベント ID を使用してエラーが発生する必要があります。

于 2012-11-29T12:13:09.557 に答える
0

アプリケーション イベント ID をパラメーターとして渡すことができます: (例: 234 )

EventLog.WriteEntry("Application", "your log message here", EventLogEntryType.Warning,  234);

EventLog.WriteEntry メソッドをさらに読む

http://msdn.microsoft.com/en-us/library/xzwc042w.aspx

于 2012-11-29T11:42:03.953 に答える