2011-09-14 13 views
2

マイapplicaitonは例外と通知メッセージをログに記録するイベントログを使用するためのEventLogイベントソースを作成し、しかし、私は受け付けており例外:標準ユーザー

ソースは見つかりませんでしたが、一部またはすべてのイベントログには が検索されませんでした。アクセスできないログ:セキュリティ

私はイベントソースは、私は(アプリケーション)に足す午前ログに見つからないことを理解し、アプリケーションがイベントソースを作成しようとしているが、それは登録することができる前に、すべてのログはする必要がありますイベントソースがまだ使用されていないことを確認するためにレビューしました。

私の質問は、標準ユーザーが使用できるイベントソースを作成する方法ですか?アプリケーションは企業ネットワーク上で動作し、すべてのユーザーを必要最小限の権限に制限します。

この問題を解決するために、EventSourceを登録する管理者ユーザーとして実行される新しいVS2008クラスファイルプロジェクトを作成しようとしましたが、これはエラーを解決しませんでした。以下は私のクラスです。

Imports System.Diagnostics 
Imports System.Configuration.Install 
Imports System.ComponentModel 

<RunInstaller(True)> _ 
Public Class InstallEventLog 
    Inherits Installer 
    Private myEventLogInstaller As EventLogInstaller 
    Public Const EventSource As String = "My Application Here" 

    Public Sub New() 
     myEventLogInstaller = New EventLogInstaller 
     myEventLogInstaller.Source = EventSource 
     myEventLogInstaller.Log = "Application" 
     Installers.Add(myEventLogInstaller) 
    End Sub 
End Class 

私はその後、私のソリューションにセットアップが再び自分のアプリケーションを実行しているとき、それは上記と同じエラーメッセージで失敗がインストールクラスプロジェクトのプライマリ出力を、持ってセットアッププロジェクトを追加しました。

+0

イベントログソースのレジストリエントリは、正常にインストールされたが問題はないと思われますか? –

答えて

0

「アプリケーションログ」の使用方法は「ログアウト」できません...あなた自身のログ(LogSourceだけでなく)を作成してみてください。この問題を解決する最良の方法は、グループポリシーを経由して、あなたのためのEventSourceを作成するには、管理者アスケだろう私見

- これが正しい権利を確実にするなど

+0

ありがとうございましたYahia、私はこの方法を調べます。 – Lima

0

私は実際にはシステムの特別な「のタイプ」を追加しました。 Configuration.Install.Installerクラス私の主なexeプロジェクトにインストールされました。アプリケーションのインストール中に.msiによって正常に実行されているようです。 rtant)。さて、この特別なインストーラクラスがイベントログソースを自動的に登録しても、インストールを実行するためにエンドユーザーが.msiをダブルクリックすると(インストール中のある時点で)、画面が暗くなり、プロンプトが表示されます管理者の資格情報が表示されます。したがって、昇格された権限は関係なく必要です。

はここで、もう一度、ちょうど私のWindowsに座って、他のクラスはEXEプロジェクト形成している私のクラスです:それは価値がある何のため

Imports System.ComponentModel 
Imports System.Configuration.Install 

<RunInstaller(True)>  
Public Class CoolAppEventLogInstaller 
    Inherits System.Configuration.Install.Installer 

    Private myEventLogInstaller As EventLogInstaller 

    Public Sub New() 
    'This call is required by the Component Designer. 
    InitializeComponent() 

    'Add initialization code after the call to InitializeComponent 

    ' Create an instance of an EventLogInstaller. 
    myEventLogInstaller = New EventLogInstaller() 

    ' Set the source name of the event log. 
    myEventLogInstaller.Source = "MyCompany Cool App" 


    ' Add myEventLogInstaller to the Installer collection. 
    Installers.Add(myEventLogInstaller) 
    End Sub 'New 

    Public Shared Sub Main() 
    End Sub 'Main 


End Class 

を、上記のコードは私のアプリでのEventLogスニペットと連携して動作します.config

<sharedListeners> 
     <add name="EventLog" initializeData="MyCompany Cool App" type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
    </sharedListeners>