【问题标题】:How can i write to the windows event log using C# (I'm getting some kind of error)?如何使用 C# 写入 Windows 事件日志(出现某种错误)?
【发布时间】:2026-01-08 15:05:01
【问题描述】:

我写过:

.
.
.
//Log exception to the event log
if (!EventLog.SourceExists("PodaHIS")) {
    EventLog.CreateEventSource("PodaHIS", "Application");   
}

EventLog eventLog = new EventLog();
eventLog.Log = "Application";
eventLog.Source = "PodaHIS";
eventLog.WriteEntry(error.ToString(), EventLogEntryType.Error);

我还启用了对 LOCALMACHINE\ASPNET 的读取权限。

作为回报,我得到:

The source was not found, but some or all event logs could not be searched. Inaccesible logs: Security.

有人知道为什么会这样吗?

【问题讨论】:

    标签: c# event-log


    【解决方案1】:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog

    需要做的是授予EventLog Key读取权限的“Security”子键。之后我重新启动了我的 IIS。

    【讨论】:

      【解决方案2】:

      此知识库文章解释了为您的 ASP 进程提供正确的安全权限以写入事件日志所需的步骤...

      kb

      【讨论】:

      • 我的问题与安全子密钥和 IIS 重启有关。
      【解决方案3】:

      如果您对要将事件日志写入的框具有权限,则可以运行a script that I wrote

      【讨论】:

      • 也许你可以粘贴你的代码,因为它不是太大。如果有一天链接断开,您的答案仍然有效。
      【解决方案4】:

      我认为在事件日志中创建源需要更高级别的访问权限。对安全日志的引用可能是巧合,它只是将其报告为可能的原因。如果您以管理员身份进入并自己创建 PodaHIS 源,您可能会发现它可以写入。

      【讨论】:

        【解决方案5】:

        您的部署环境是什么?如果是 Vista/Server 2008,则由于 UAC 的原因,无法将工作人员帐户添加到管理员组。

        这个link 详细解释了这个问题。 但我建议尝试手动创建事件源,这样 ASPNET 就不需要创建它了...

        【讨论】:

        • 如果我的回答如下,我已经找到了解决方案。
        最近更新 更多