- PR -

イベントログへの書き込み

投稿者投稿内容
ダンクーガ
常連さん
会議室デビュー日: 2003/03/14
投稿数: 48
お住まい・勤務地: 千葉県
投稿日時: 2003-05-20 10:11
お世話さまです。

ASP.NETでTry〜Catchで例外処理が発生したらOSのイベントログに書き込みを行いたいのですが

"要求されたレジストリ アクセスは許可されていません。"

とエラーが返ってきてしまいます。何か設定が必要なのでしょうか?解決方法や参考になるサイトをご存知でしたらぜひ教えてください。下記は書き込みを行っている部分のソースです。


EventLog.WriteEntry("SecondSource", "Writing warning to event log.", _
EventLogEntryType.Error)

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-05-20 10:52
こんにちは。
引用:

ダンクーガさんの書き込み (2003-05-20 10:11) より:

ASP.NETでTry〜Catchで例外処理が発生したらOSのイベントログに書き込みを行いたいのですが

"要求されたレジストリ アクセスは許可されていません。"

とエラーが返ってきてしまいます。何か設定が必要なのでしょうか?


 ASP.NETは「USER」権限なので、イベントログに書き込むためのレジストリエントリにアクセスできないのです。
 MSDNライブラリ(ヘルプ)の目次で、
「.NET開発→.NET開発→Visual Studio .NET→製品ドキュメント→Visual Basic と Visual C#→コンポーネントによるプログラミング→システム監視コンポーネントの作成→アプリケーション、サーバー、およびセキュリティ イベントのログの記録」以下が参考になるでしょうか。
ふぁん
会議室デビュー日: 2003/05/20
投稿数: 9
投稿日時: 2003-05-20 11:24
"SecondSource"名のイベントソースが存在しないのではないでしょうか。
以下のC#のプログラムを実行した後に試して見てください。
Main{
const string LOG_SOURCE = "SecondSource" ;
const string sLog = "Application";
if (!EventLog.SourceExists(LOG_SOURCE))
{
EventLog.CreateEventSource(LOG_SOURCE,sLog);
EventLog.WriteEntry(ERROR_LOG_SOURCE,"SecondSource作成成功");
}
}
FOX
ベテラン
会議室デビュー日: 2002/04/08
投稿数: 63
お住まい・勤務地: いなか
投稿日時: 2003-05-20 11:43
去年の夏に私も悩んだ記憶があります。
確かイベントソースの作成にはアドミニストレータ権限がいることを覚えています。
ただしイベントソース作成以降はASPNETユーザでも書き込めるようになったと思います。
ですので私は事前にイベントソース作成用のEXEを実行した覚えがあります。
ふぁんさんの書き込みを見て思い出しました。
AOPP
ベテラン
会議室デビュー日: 2002/11/18
投稿数: 66
投稿日時: 2003-05-20 14:06
aoppです。

WinNT\Microsoft.NET\Framework\<version>\config\machine.configの
<processModel userName="machine"を"SYSTEM"に変更すれば、権限付与できます。

他の権限(ファイル更新など)も付与されるので、注意
ダンクーガ
常連さん
会議室デビュー日: 2003/03/14
投稿数: 48
お住まい・勤務地: 千葉県
投稿日時: 2003-05-20 15:05
Jittaさん、ふぁんさん、FOXさん、AOPPさん返答どうもありがとうございます、大変参考になりました。

アクセスの権限を変更することで書き込みそのものはできたのですがイベントソースを作成する方法を下記のように実装してみたところアクセス許可がないとのエラーが返ってきてしまったのですがこれはイベントソース作成にも権限が関係しているのでしょうか?



Const LOG_SOURCE As String = "SecondSource"
Const ERROR_LOG_SOURCE As String = "SecondSource"
Const sLog As String = "Writing warning to event log."
If (Not EventLog.SourceExists(LOG_SOURCE)) Then

EventLog.CreateEventSource(LOG_SOURCE, sLog)
EventLog.WriteEntry(ERROR_LOG_SOURCE, "SecondSource作成成功")

End If
AOPP
ベテラン
会議室デビュー日: 2002/11/18
投稿数: 66
投稿日時: 2003-05-20 15:09
aopp 以下のソース書けました

EventLog eventLog = new EventLog( "Application", ".", "名称" );
eventLog.WriteEntry( "メッセージ", EventLogEntryType.Error );
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-05-20 15:58
 アプリケーションイベントログに関しては、誰にでも(world)書き込み権があるようなのですが・・・
カスタム イベント ログの作成と削除
イベント ログへのアクセス権

過去に作ったもの:
' InitializeComponent() 呼び出しの後に初期化を追加します。
If Not EventLog.SourceExists("Checker") Then
EventLog.CreateEventSource("Checker", "Logs")
End If
ServiceEventLog.Source = "Checker"
ServiceEventLog.Log = "Logs"
〜中略〜
Me.EventLog.WriteEntry(msg.ToString, EventLogEntryType.Error)

スキルアップ/キャリアアップ(JOB@IT)