2012-01-05 11 views
0

私は1つのWindowsサービスを作成しました。サービスをインストールした後、私はサービスを開始しました。しかし、私は私のサービスのイベントログを取得しませんでした。イベントビューアでサービスを受ける方法

次のコードを使用しました。

public partial class Service1 : ServiceBase 
{ 
    public Service1() 
    { 
     InitializeComponent(); 
     this.ServiceName = ConfigurationManager.AppSettings.Get("ServiceName"); 
     string sourceName = ConfigurationManager.AppSettings["Source"]; 
     string logName = ConfigurationManager.AppSettings["Log"]; 
     if (!System.Diagnostics.EventLog.SourceExists(sourceName)) 
      System.Diagnostics.EventLog.CreateEventSource(sourceName, logName); 
     eventLog.Source = sourceName; 
     eventLog.Log = logName; 

    } 

    protected override void OnStart(string[] args) 
    { 
     eventLog.WriteEntry("Service Starting..."); 
    } 

    protected override void OnStop() 
    { 
     eventLog.WriteEntry("Service Stopped..."); 
    } 
} 

私はイベントビューでこれをチェックします。私は私のサービス名を取得しませんでした。

これを取得する方法。

おかげで、 プージャ

答えて

0

このための最も可能性の高い理由は、サービス利用者は、イベントソースを作成するための十分な権限を持っていないということです。

これが本当かどうかを判断するには、コンストラクタにtry/catchハンドラを追加する必要があります。

ローカル管理者ユーザーとしてサービスを実行することもできます。これにより、イベントソースが作成されるはずです。

この理由から、インストール時には常にイベントソースを作成し、インストールを実行するには管理者ユーザーが必要です。お返事のための

try { 
     if (!System.Diagnostics.EventLog.SourceExists(sourceName)) 
      System.Diagnostics.EventLog.CreateEventSource(sourceName, logName); 
    } catch (SecurityException e) { 
     sourceName = "Application"; 
    } 
    eventLog.Source = sourceName; 
+0

ありがとう:

我々が使用する別のオプションは、優雅に私達は私達のイベントソースを作成するセキュリティ例外が発生した場合に、アプリケーションイベントログを使用して劣化することがあります。私は管理者権限を持っているかどうかを確認する方法、このauthotityを取得する方法。 – Pooja

+0

このMSDNのドキュメントをご覧ください。回答はお使いのオペレーティングシステムによって異なります。http://msdn.microsoft.com/en-us/library/2awhba7a.aspx –

関連する問題