0

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

  • 我有 2 台计算机的域设置
  • 一台计算机正在运行 IIS,另一台计算机是工作站。IIS 是运行 Win2k3 的工作站 Win XP。
  • IIS 计算机正在托管一个使用 Windows 模拟的网站,并尝试将条目记录到事件日志中,以获取名为MyApp的自定义日志文件和自定义事件源MySource
  • 我有一个名为 MyUser 的域用户,他只是域用户的成员。
  • 单点登录工作 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 )

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

4

2 回答 2

0

正如您似乎已经发现的那样,该错误与写入事件源或创建它们有关。我建议您尝试以下方法。

您没有说明事件源是否存在于注册表中,也没有说明系统创建的 .evt 文件是否存在,或者您是否将它们放在了机器上,因此很难确定您在哪一点卡住了。

您也没有提到这是否适用于某些开发人员的机器,在这种情况下,您可以比较注册表,甚至在必要时手动创建密钥。

  1. 如果您的日志的密钥已创建(MyApp?),请查看 ...\Eventlog。
  2. 查看 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\MyApp。应该有一个名为 Sources 的键。您的来源是否出现在此处?

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

在错误消息中,它应该指示一个 ThreadIdentity 参数,该参数应该指示它试图使用哪个用户帐户来执行此操作。您还可以打开 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog 的权限并查询此特定用户的“有效权限”,以确保其有效地真正拥有完全控制权。

尝试授予对整个目录 C:\windows\system32\config\ 的完全控制权,而不仅仅是 .evt 文件,因为系统还需要在此处创建一些额外的文件。

最后,您可以尝试启用对网站的匿名访问,并以机器/域管理员用户身份运行一次,以便在将其设置回您喜欢的方式之前创建所有密钥。您还可以尝试在 web.config 文件中启用模拟,以确保它不会在没有 Windows 身份的情况下运行。一旦创建了正确的密钥和文件,您应该都可以撤消这些。

让我们知道您在此之后发现了什么,我们可以更进一步。

于 2010-05-27T14:22:03.523 回答
0

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

首先,我必须允许 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. 添加经过身份验证的用户组
  7. 保存并为受影响的计算机执行 gpupdate /force。

这是我可以让它允许我的网站用户写入事件日志的唯一方法。

我在第 1 部分第 6 步中提到,我将解释我们添加的字符串。有关详细信息,请参阅此页面http://support.microsoft.com/kb/323076

于 2010-12-06T17:40:17.303 回答