0

保護モードがオンになっているWindows7のInternetExplorer内で実行されているBHOで、Windowsイベントログに書き込もうとしています。すでに存在するソースに書き込んでいますが、それはアプリケーションログにあるので、なぜこれがブロックされるのかわかりません。ただし、への呼び出しSystem.Diagnostics.EventLog.WriteEntry("MySource", "Some message")は、InvalidOperationExceptionで失敗し、「ソース'XXX'のログを開くことができません。書き込みアクセス権がない可能性があります。」というメッセージが表示されます。スタックトレースは、にあることを示していますEventLog.OpenForWrite(String currentMachineName)

プロテクトモードをオフにすると、正常に機能します。

これがプロテクトモード内で許可されない理由、およびイベントログへの書き込みが許可されているものとしてBHOを登録する方法、またはその他の方法で機能させる方法はありますか?

この投稿によると、OpenForWrite()を呼び出すとUnsafeNativeMethods.RegisterEventSource(this.machineName, this.sourceName);、が呼び出されますが、そのドキュメントではそれ以上のことはできませんでした。

.net2.0を使用しています

ありがとう。

ここにクロスポスト:msdn_microsoft_ieextensiondevelopment

4

1 に答える 1

1

本当にシステムログに書き込む必要がある場合は、次のいずれかを実行します。

  • サービスを作成し、それにメッセージを送信します-定期的に何かをログに記録する場合は、これを行います。しかし、誰がシステムログに大量のメッセージを書き込みますか?
  • ブローカープロセスとして中程度の信頼に昇格した小さなアプリケーションをサイレントに起動します

オプション2で行きましょう。これを行うにはいくつかの方法がありますが、1つのアイデアを紹介します。整合性の低い場所にあるファイルまたはレジストリに記録するデータを書き込みます。次に、中程度の信頼度に昇格した小さなアプリケーションを起動します。このアプリケーションは、データを取得して書き込みます。これは効率的ですか?いいえ。ただし、システムログへの書き込みが非常にまれなイベントである場合、これにより、時間の経過とともにオーバーヘッドが最小になります。

サービスアプローチはユーザーにはあまりわかりませんが、コンピューターのリソースから少しパイを奪います。

保護モードInternetExplorerの理解と操作については、保護モードからのプロセスの開始を参照してください。

于 2011-05-17T19:28:40.927 に答える