关于“不允许所请求的注册表访问权”问题的总结.txt

(同学的总结)

自己在做用asp.net(vb.net)访问Oracle的时候遇到这样的调试错误:

一直郁闷快一个星期了都没有解决。

“/OracleWeb”应用程序中的服务器错误。
--------------------------------------------------------------------------------

安全性异常
说明: 应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。

异常详细信息: System.Security.SecurityException: 不允许所请求的注册表访问权。

源错误:


行 29:             Dim ConnStr As String
行 30:             ConnStr = " Provider=OraOleDb.Oracle;Data Source=wei;User id=system;Password=manager "
行 31:             Dim conn As New OleDbConnection(ConnStr)
行 32:             conn.Open()
行 33:             Dim da As New OleDbDataAdapter("select * from weishuang", conn)
 

源文件: C:/Inetpub/wwwroot/OracleWeb/WebForm1.aspx.vb    行: 31

堆栈跟踪:


[SecurityException: 不允许所请求的注册表访问权。]
   Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable) +473
   System.Data.Common.ADP.ClassesRootRegistryValue(String subkey, String queryvalue)
   System.Data.OleDb.OleDbConnectionString.ValidateParse()
   System.Data.Common.DBConnectionString..ctor(String connectionString, UdlSupport checkForUdl)
   System.Data.OleDb.OleDbConnectionString..ctor(String connectionString)
   System.Data.OleDb.OleDbConnectionString.ParseString(String connectionString)
   System.Data.OleDb.OleDbConnection.set_ConnectionString(String value)
   System.Data.OleDb.OleDbConnection..ctor(String connectionString)
   OracleWeb.WebForm1.Page_Load(Object sender, EventArgs e) in C:/Inetpub/wwwroot/OracleWeb/WebForm1.aspx.vb:31
   System.Web.UI.Control.OnLoad(EventArgs e)
   System.Web.UI.Control.LoadRecursive()
   System.Web.UI.Page.ProcessRequestMain()
   System.Web.UI.Page.ProcessRequest()
   System.Web.UI.Page.ProcessRequest(HttpContext context)
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication+IExecutionStep.Execute()
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +87

 


--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.2032; ASP.NET 版本:1.1.4322.2032 
 

然后试验了一下网上所说的几种方法:

1.微软提供的无人工介入的自动的机器翻译系统上提示说:

要解决此问题, 获取最新 ServicePack 用于 Microsoft.NETFramework 1.1。 要获取最新 ServicePack, 请访问以下 Microsoft 网站:
http://www.microsoft.com/downloads/details.aspx?familyid=A8F5654F-088E-40B2-BBDB-A83353618B38

结果没能解决我所遇到的问题。

2.蝈蝈俊.net的博客上有人提到如下方式:

“IIS虚拟目录的匿名访问选择框点掉再选中”大法:

首先,不让该站点虚拟目录启用匿名访问,这样在本机管理员身份下访问你的web应用,因为你当前的身份应该拥有对注册表的权限,所以肯定能做Enterprise Library要做的事情。然后,再让虚拟目录启用匿名访问,再次访问Web应用,一切恢复正常,不再报告“System.Security.SecurityException: 不允许所请求的注册表访问权。”了。

结果没能解决我所遇到的问题。


3.最后找到这样一个方法解决了我所遇到的问题:
在vs.net项目的web.config文件下添加一个节点如下:
    <authorization>
        <allow users="*" /> <!-- 允许所有用户 -->

            <!--  <allow     users="[逗号分隔的用户列表]"
                             roles="[逗号分隔的角色列表]"/>
                  <deny      users="[逗号分隔的用户列表]"
                             roles="[逗号分隔的角色列表]"/>
            -->
    </authorization>
    <identity impersonate="true" userName="nuc" password="" /> 其实就是添了最后的一句话。
userName="nuc" password=""是操作系统的登录名称和密码。

之所以把上面的方式都列举出来,并不是说另外人的方式不对,而是把所有可能解决问题的方式做一个小小的总结,供大家参考,可能另外的方法恰能解决你所遇到的类似的问题,以下提供两个网址供参考:
http://blog.joycode.com/ghj/archive/2005/07/26/60364.aspx

http://www.cnblogs.com/zhengyun_ustc/archive/2006/05/03/Requested_registry_access_is_not_allowed.html

!!!!!!!!!另外特别提醒一点:重新装系统以后最好不要随便更改电脑的名字(当然这只是对编程的朋友),否则很容易引起一系列的错误比如iis不能运行asp,等等一些web应用程序的错误,往往需要“同步iwam账号在active directory、iis metabase数据库和com+应用程序中的密码”才能彻底的解决,搞不好,你的系统就会全部down掉。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值