在ASP.NET程序中使用事件日志的条件——关于注册表的访问控制表
2010-08-01 11:52
866 查看
近几天折腾了一个比较奇怪的东西,放在服务器上就出现莫名其妙的故障。
由于没法直接在服务器上调试,手边又没有服务器的镜像,就想到靠事件日志来记录运行过程中产生的异常来分析。
但是在最初的尝试中,总是会产生安全异常——根据提示检查.NET权限设置也没发现问题出在哪里……
在参考了一些文章、又经过一些探索之后,可以我发现:
1、对事件日志进行任何操作时必须具有读取事件日志服务的注册表项目的权限。
2、无论对日志进行何种操作,必须要具有对安全日志的注册表项目进行读取的权限。
3、创建新的日志和事件/消息源时必须具有对事件日志服务的注册表项目进行值写入的权限,同时还需要在其下创建子项目的权限。
需要注意的是:
一般情况下运行ASP.NET程序的程序池所使用的身份是Network Service或者ASPNET,而这两个身份是没有操作事件日志服务的注册表项目的权限的,所以在ASP.NET程序中使用事件日志之前必须设置相应的注册表项目,允许ASP.NET的程序池对其访问——事件日志服务在注册表中对应的路径是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog。
另外安全日志对应事件日志之的Security注册表项目,它的ACL并不直接继承自eventlog,是需要单独设置的。
在为eventlog添加了允许Network Service读写和创建子项目、为Security添加了允许Network Service进行读取的访问控制规则以后,我的ASP.NET应用程序就可以创建并写入事件日志了。
对于类似的问题,微软知识库中有一个建议的解决方法,是运行一个使用EventLogInstaller组件创建的独立的应用程序——不过本质上还是利用了管理员的特权来进行操作,在此就不再详细说明了。
由于没法直接在服务器上调试,手边又没有服务器的镜像,就想到靠事件日志来记录运行过程中产生的异常来分析。
但是在最初的尝试中,总是会产生安全异常——根据提示检查.NET权限设置也没发现问题出在哪里……
在参考了一些文章、又经过一些探索之后,可以我发现:
1、对事件日志进行任何操作时必须具有读取事件日志服务的注册表项目的权限。
2、无论对日志进行何种操作,必须要具有对安全日志的注册表项目进行读取的权限。
3、创建新的日志和事件/消息源时必须具有对事件日志服务的注册表项目进行值写入的权限,同时还需要在其下创建子项目的权限。
需要注意的是:
一般情况下运行ASP.NET程序的程序池所使用的身份是Network Service或者ASPNET,而这两个身份是没有操作事件日志服务的注册表项目的权限的,所以在ASP.NET程序中使用事件日志之前必须设置相应的注册表项目,允许ASP.NET的程序池对其访问——事件日志服务在注册表中对应的路径是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog。
另外安全日志对应事件日志之的Security注册表项目,它的ACL并不直接继承自eventlog,是需要单独设置的。
在为eventlog添加了允许Network Service读写和创建子项目、为Security添加了允许Network Service进行读取的访问控制规则以后,我的ASP.NET应用程序就可以创建并写入事件日志了。
对于类似的问题,微软知识库中有一个建议的解决方法,是运行一个使用EventLogInstaller组件创建的独立的应用程序——不过本质上还是利用了管理员的特权来进行操作,在此就不再详细说明了。
相关文章推荐
- 关于部署完asp.net程序后不能访问页面也不能连接数据库的问题
- 在IIS中访问APS页面时提示:“最可能的原因使用的托管的处理程序,但是未安装或未完整安装asp.net“
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
- ASP.NET Core中使用自定义验证属性控制访问权限
- 在IIS中访问APS页面时提示:“最可能的原因使用的托管的处理程序,但是未安装或未完整安装asp.net“
- ASP.NET Core使用自定义验证属性控制访问权限详解
- [ASP.NET MVC] 使用CLK.AspNet.Identity提供以角色为基础的访问控制(RBAC)
- 使用HTML页面和一般处理程序模拟ASP.NET WebForms中的事件
- 让Asp.net程序使用unc路径访问网络文件夹
- 使用ASP .NET察看和清除你的事件日志
- 关于ASP.NET 不允许所请求的注册表访问权。
- 使用jQuery的validation后,无法引发asp.net按钮的事件处理程序
- 使用ASP .NET察看和清除你的事件日志
- 关于asp.net web程序的访问,为什么老提示输入用户名和密码?
- 关于ASP.NET访问ACCESS数据的“不能打开注册表关键字”80004005错误的探讨
- 使用IsLine FrameWork开发ASP.NET程序之二—使用DataProvider 访问数据 (上)
- ASP.NET-使用事件监视诊断程序异常
- 使用IsLine FrameWork开发ASP.NET程序之三—使用DataProvider 访问数据(下)