34

IIS7で実行されているASP.Net3.5では、これをそのまま使用することはできないようです。

        if (!EventLog.SourceExists("MyAppLog"))
            EventLog.CreateEventSource("MyAppLog", "Application");

        EventLog myLog = new EventLog();
        myLog.Source = "MyAppLog";
        myLog.WriteEntry("Message");
4

3 に答える 3

37

ここからこの回答をコピーしました(質問はLog4Netでしたが、回答は引き続き適用されます)。technet のリンクには、重要なステップがありません。

レジストリ キーを作成する

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MY-AWESOME-APP

この中に文字列値を作成します

名前を付けてEventMessageFile、その値をに設定します

C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll

そのパスは、64 ビット環境と 32 ビット環境の両方で機能するようです。

この手法を使用すると、レジストリにアクセス許可を設定する必要はありません。上記のキーが作成されると、機能するはずです。


の方法として、大規模なサーバー ファームがなく、小さな "Web ガーデン" しかない場合は、各サーバーで を使用してイベント ログ ソースを作成するコンソール アプリケーションEventLog.CreateEventSourceを実行できます。コンソール アプリケーションが管理者によって実行されていることを確認してください。

于 2011-10-21T10:53:52.813 に答える
25

これは、Windows 2003 以降の Windows セキュリティの一部です。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application の下のレジストリにエントリを作成する必要があります。偽装するネットワーク サービスまたはアカウントに、このレジストリ キーへのアクセス許可があることを確認してください。

@CheGueVerra のリンク:要求されたレジストリ アクセスは許可されていません

于 2008-11-13T02:26:56.867 に答える
5

アプリケーションを右クリックし、「管理者として実行」を選択します

于 2016-01-21T07:52:12.467 に答える