我正在尝试从ASP.net写入Windows事件日志。应用程序池在域帐户而不是网络服务下运行。
我的开发环境一切正常,但有一个问题。由于应用程序池作为域帐户运行,因此我必须将(A;;0x0002;;;AU)
添加到Application\CustomSD
注册表项,以允许Authenticated Users访问事件日志。这在我的开发盒上很好,但在生产服务器上有效。 (没有注册表调整,他们说。找另一种方式。)
根据我的了解,Windows Server 2k3 SP2上的默认事件日志仅允许在用户会话中设置LOGON32_LOGON_INTERACTIVE
,LOGON32_LOGON_BATCH
或LOGON32_LOGON_SERVICE
标记的登录。< / p>
有没有办法在应用程序池的登录名中添加其中一个标志? IIS在启动应用程序池时不设置标志。我已经看过使用LogonUser
创建一个带有正确标志的临时安全上下文,但这需要在某处存储密码,如果可能的话我想避免使用它。
关于如何允许IIS使用自定义应用程序池帐户写入事件日志而不修改Windows Server 2k3 SP2上的注册表的任何想法?
编辑:由于安全限制,我无法将应用池帐户添加到本地管理员组。
资源
Using programmatic Impersonation from an ASP.NET Page
Allowing impersonated accounts to write to your custom event log
答案 0 :(得分:2)
如果在第一次写入尝试之前只创建/注册了事件源,则该帐户应该能够写入事件日志。创建源需要管理权限,但写入不需要。
正如EventLog
类的documentation page所示,应在安装应用程序期间创建和配置事件源。