【问题标题】:The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security [duplicate]未找到源,但无法搜索部分或全部事件日志。无法访问的日志:安全 [重复]
【发布时间】:2013-12-05 00:48:15
【问题描述】:

我收到错误:

未找到源,但无法找到部分或全部事件日志 搜索。无法访问的日志:安全性

当我运行以下代码以捕获 Win 2K12 R2 服务器 IIS 8.5 上的错误时

EventLog elog = new EventLog();
EventLog.CreateEventSource("MyApp", "Application");
EventLog.WriteEntry(Source, swError.ToString(), EventLogEntryType.Error);

我已授予对HKLM\SYSTEM\CurrentControlSet\services\eventlog 的完全访问权限,但它仍然无法正常工作。我该怎么做才能解决它?

【问题讨论】:

标签: c# iis event-log iis-8


【解决方案1】:

creating a registry key

这个问题不仅可能是由于权限问题,还可能是由于未成功注册事件源密钥丢失(您需要管理员权限才能做到这一点 - 如果您只是像往常一样打开 Visual Studio 并正常运行程序这还不够)。确保您的事件源“MyApp”实际已注册,即它出现在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application 下的注册表中。

来自MSDN EventLog.CreateEventSource()

在 Windows Vista 及更高版本或 Windows Server 中创建事件源 2003,您必须具有管理权限。

因此,您必须以管理员身份运行事件源注册代码(另外,检查源之前是否已经存在 - 请参阅上面的 MSDN 示例),或者您可以手动将密钥添加到注册表:

  1. 创建一个注册密钥HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MyApp
  2. 在里面,创建一个字符串值EventMessageFile并将其值设置为例如C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll

【讨论】:

  • 如果您使用较新的框架,EventMessageFile 的值可能是 C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll
  • 我正在寻找我的应用程序的注册名称,但缺少的注册表项实际上是“我的应用程序”。
  • 底线:它在EventLog.CreateEventSource() 上失败,因为创建密钥需要管理员权限。他要么需要以所述权限运行应用程序(或 Visual Studio,如果在运行时进行调试),或者提前创建密钥并检查它而不是创建它,如果它已经存在。
  • 这不是一个正确的解决方案,尤其是对于最终用户。
【解决方案2】:

我在运行 Visual Studio 时遇到此错误。通过running Visual Studio as Administrator,应用程序能够访问安全日志,因为它拥有足够的权限(从而防止了错误)。

【讨论】:

  • 即使使用 VS(以管理员身份运行),我也必须添加注册表项。
  • 以管理员身份运行对我有用。 Windows 8.1 VS 2017 社区
  • 以管理员身份运行 VS 对我有用(Win10、VS 2019)
  • 这不是一个正确的解决方案,尤其是对最终用户而言。
【解决方案3】:

我知道,我参加聚会有点晚了……发生了很多事情,您只需在 IIS 的 应用程序池 中使用默认设置。在 IIS 管理实用程序中,转到app pools->select pool-->advanced settings->Process Model/Identity 并选择具有正确权限的用户身份。默认情况下,它设置为ApplicationPoolIdentity。如果您是开发人员,您很可能是您机器上的管理员,因此您可以选择您的帐户来运行应用程序池。在部署服务器上,让管理员处理它。

【讨论】:

    【解决方案4】:

    每当您启动 Visual Studio 时,以管理员身份运行它。它对我有用。

    【讨论】:

    • 谁说的“视觉工作室”?你说!问题没有提到这个
    • 当我看到这个错误时,我还必须以管理员身份运行 VS 开发人员命令提示符。
    【解决方案5】:

    我在本地以管理员权限运行visual studio,错误消失了。

    如果您在任务计划程序中遇到此错误,您必须选中以高权限运行的选项

    【讨论】:

    • 谁说的“视觉工作室”?你说!问题没有提到这个
    • 如果您使用 Visual Studio 2017 >> Developer Command Prompt for VS 2017 >> installutil.exe 部署服务,则会收到与此页面标题完全匹配的错误,因此这是一个相当不错的放置位置这个答案(适用于 Visual Studio 用户)。当我以管理员身份再次运行命令提示符时,它可以解决错误。
    【解决方案6】:

    尝试为 AppPool ID 或网络服务提供任何适用的访问权限 HKLM\SYSTEM\CurrentControlSet\services\eventlog\security。我遇到了同样的错误..这对我有用。看到错误还说无法访问的日志是安全日志。

    我也在 eventlog\application 中授予了权限。

    我在任何地方都授予了完全访问权限。

    【讨论】:

      【解决方案7】:

      这也可能是因为它可能无法找到所需的 .dll 文件。 文件不在文件夹中或已重命名。 我遇到了同样的问题,发现我的 bin 文件夹中缺少 .dll 文件。

      【讨论】:

        【解决方案8】:

        在 Visual Studio 中调试时,在应用程序池高级设置中使用 NetworkService 作为标识值。 ApplicationPoolIdentity 如果您直接从浏览器打开站点(或转到 IIS 中的虚拟目录并使用右侧的“浏览”选项),则该站点可以正常工作。

        【讨论】:

          【解决方案9】:

          我最近开始在使用 Visual Studio 2013 的内部 NLog 故障日志中收到此错误。该解决方案已使用 NLog v2.0.0 好几年了。在上个月内,我们的主日志停止工作。为了解决这个问题,我通过 Nuget 将 NLog 更新到了最新版本(v3.1.0)。安全异常现已消失,所有日志消息都再次出现。

          此外,我后来发现了另一个安全异常,并且能够按照post in another thread 上的说明进行修复。

          【讨论】:

            猜你喜欢
            • 2014-08-05
            • 1970-01-01
            • 2011-08-14
            • 1970-01-01
            • 2012-03-22
            • 2019-04-03
            • 2016-07-18
            • 2011-10-19
            相关资源
            最近更新 更多