【问题标题】:Cannot open log for source {0} on Windows 2003 Server无法在 Windows 2003 Server 上打开源 {0} 的日志
【发布时间】:2011-01-29 13:34:43
【问题描述】:

我的服务器上的事件日志存在很大问题。好吧,让我先解释一下设置。

  • 我有 2 台计算机的域设置
  • 一台计算机正在运行 IIS,另一台是工作站。 IIS 正在运行 Win2k3 工作站 Win XP。
  • IIS 计算机正在托管一个使用 Windows 模拟的网站,并尝试将条目记录到事件日志中,以获取名为 MyApp 的自定义日志文件和自定义事件源 MySource
  • 我有一个名为 MyUser 的域用户,他只是 Domain Users 的成员。
  • 单点登录正在 100% 工作,因为我可以将登录的用户写入页面。

当我从工作站访问 IIS 页面时,我收到以下消息之一(有时我收到第一条消息,有时收到第二条消息)

1) The handle is invalid
2) Cannot open log for source 'MySource'. You may not have write access.

为了解决这个问题,我尝试了以下所有方法:

将 Everyone 用户 FullControl 授予 C:\windows\system32\config\MyApp.evt 文件

将所有人用户 FullControl 授予 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog

在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\MyApp\CustomSD 键中,我附加了以下字符串 (A;;0x0002;;;AU),(原因可以在这里阅读http://fgheysels.blogspot.com/2008/01/cannot-open-log-for-source-0-on-windows.html

我现在完全不知道如何解决这个问题。有没有其他人遇到过这个,你有没有尝试过其他的方法。

【问题讨论】:

    标签: iis iis-6 event-log eventlog-source custom-eventlog


    【解决方案1】:

    错误,正如您所发现的那样,涉及写入事件源或创建它们。我建议你试试下面。

    您未指示事件源是否存在于系统创建的.Evt文件库中的事件源或者是否将它们放在机器上,因此很难确定您卡住的点。 P>

    如果这在某些开发人员的机器上有效

    1. 如果创建了日志的键(MyApp?),请在... \ Eventlog下看看... \ Eventlog。
    2. 查看HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlset \ Services \ EventLog \ MyApp。 应该有一个名为源的关键。您的来源是否出现在这里?

    如果这些条目不存在,则错误是您的用户没有创建自定义日志和源的权限。

    在错误消息中,它应该指示ThreadIdentity参数,这应该指示它试图执行此操作的用户帐户。您还可以打开HKEY_LOCAL_MACHINE \ SYSTEM \ CURRYCONTROLSET \ SERVICES \ EVENTLOG并查询本特定用户的“有效权限”的权限,以确保它有效地确保完全控制。

    尝试将完全控制授予整个目录c:\ windows \ system32 \ config \而不仅仅是.evt文件,因为系统需要在此处创建一些其他文件。

    最后,您可以尝试并启用对网站的匿名访问,并将其运行为机器/域管理员用户一次,因此所有密钥都会创建,然后再将其恢复为您喜欢它。您还可以尝试在Web.config文件中启用模拟,以确保在没有Windows身份的情况下无法运行。一旦创建了正确的键和文件,就应该能够撤消。

    让我们知道在此之后找到了什么,我们可以进一步拍摄。

    【讨论】:

    • 我尝试全部以上,似乎没有似乎解决问题。我发布了我发现是下面唯一的解决方案。 span>
    【解决方案2】:

    经过数小时的尝试解决这个问题,我似乎有了一个可行的解决方案。

    首先,我必须允许 Authenticated Users 组对事件日志进行写访问。我建议您在继续之前备份您的注册表。

    1. 运行注册表
    2. 浏览到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog
    3. 打开与您正在写入的 EventLog 匹配的子项(所以我将选择 Application
    4. 您会在右侧看到注册表字符串,找到一个名为 CustomSD
    5. 右键修改。
    6. 追加到末尾(A;;0x2;;;AU)(我稍后会解释)
    7. 保存更改(不知道是否需要重启)

    这意味着经过身份验证的用户可以写入应用程序事件日志。我需要再应用一项更改。

    1. 打开域 GPO 或本地计算机 GPO
    2. 导航到计算机配置 > Windows 设置 > 安全设置 > 本地策略 > 用户权限 > 分配 > 管理审核和安全日志
    3. 转到其属性窗口
    4. 选择定义这些策略设置
    5. 添加管理员组
    6. 添加 Authenticated Users 组
    7. 保存并为受影响的计算机执行 gpupdate /force。

    这是我能让我的网站用户写入事件日志的唯一方法。

    我在第 1 部分第 6 步中提到过,我将解释我们添加的字符串。请参阅此页面了解更多详情http://support.microsoft.com/kb/323076

    【讨论】:

    • 附加 (A;;0x2;;;AU) 后,您无需重新启动。你确实需要做一个iisreset,否则你可能会遇到无效句柄异常。
    猜你喜欢
    • 1970-01-01
    • 2012-11-22
    • 2011-03-20
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多