0

私のアプリケーションは、新しい EventLog ソースを作成し、EventLog.SourceExists を使用するライブラリ (私は制御できません) を呼び出します。投げるSystem.Security.SecurityException: The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security.

アプリには への読み取りアクセスが必要ですHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Security。Network Service のアクセス許可をレジストリに (プログラムで) 与えるにはどうすればよいですか?

ご指摘ありがとうございます。

4

2 に答える 2

0

私は今日この同じ問題に遭遇しました.WinFormsまたはASPXの答えはどれも私の状況では実用的ではないようでした(非インストールのスケジュールされたタスクexe)。だから私はこれをしました: -

    protected void prog_Load(object sender, EventArgs e)
    {
        boolean setupComplete = false;
        try // setting an Event log entry, just to see if we can
        {
            logEvent = "prog started";
            EventLog.WriteEntry(logSource, logEvent, EventLogEntryType.Information, 0);
            setupComplete = true;
        }
        catch (Exception eLog1) // we can't, so try to fix
        {
            try
            {
                EventLog.CreateEventSource(logSource, logLog);
                logEvent = "prog registered for Event Logging";
                EventLog.WriteEntry(logSource, logEvent, EventLogEntryType.Information, 0);
            }
            catch (Exception eLog2) // aha!  we probably lack admin rights to set the registry key
            {
                MessageBox.Show("prog needs admin rights the first time it runs", "prog Setup", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        // run
        if (setupComplete == true)
        {
            DoTheWork();
        }

        // exit
        this.Close();
    }
于 2013-03-19T15:28:27.360 に答える
0

「新しいソース」が登録されておらず、そのためには管理者権限が必要なため、このエラー メッセージが表示されます。コンソールで「管理者」としてアプリを実行してみてください。

「ソース」を自分で追加して、「レジストリ」もハッキングしたことがありますが、それはおそらく賢明ではありません。

于 2012-07-16T19:56:49.140 に答える