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

<authorization>
   <allow users="*"/>
  </authorization>
  <identity impersonate="true" userName="Administrator" password="123" />

 

 

 

自己在做用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掉。


 

你可能感兴趣的:(注册表)