不允许所请求的注册表访问权

用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.微软提供的无人工介入的自动的机器翻译系统上提示说:

扫描二维码关注公众号,回复: 2931174 查看本文章

要解决此问题, 获取最新 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文件下添加一个节点如下:



其实就是添了最后的一句话。
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掉。

猜你喜欢

转载自blog.csdn.net/bieli5211/article/details/81940499
今日推荐