2009-12-29 49 views
1

我们的web应用程序有一个在IE中运行的activex dll。它被赋予了一个强大的名字和基于该强名称的自定义权限集。activex需要的受信任站点

装配饰是这样的:

[assembly: AllowPartiallyTrustedCallers] 

和类的ActiveX控件需要这样在浏览器中运行:

[PrintingPermission(SecurityAction.Assert, Unrestricted = true)] 

当我Trusted_Zone下添加我们的自定义代码组并将该网站添加到受信任的网站,一切工作正常。但是,当我在Internet_Zone下添加代码组并将activex控件从受信任的站点中删除时,activex控件将无法运行。

在IE8中,安全区域都设置为默认设置。另外,当我将Internet区域中的“ActiveX控件和插件”的安全设置更改为与“受信任的站点区域”中相同时,该控件不起作用。还有什么我需要做的,无论是通过caspol或IE设置,让它在互联网区域运行?

回答

2

有你添加的安全执行脚本和安全有关COM注册(或实现IObjectSafety的)初始化类。如果你不那么IE就不会相信你的控制权,并拒绝创建它。有关将正确的键放入注册表的信息,请参阅this之类的内容。

或者你是否直接在IE中使用它?在没有注册它,但在classid属性中传递dll路径?如果是这样的话,生活会更加困难。 IE8不再加载Internet区域中的dotnet控件,并且没有用户界面来启用它(我记得,尽管在安全编辑器中看过)。您可以通过将Internet区域的URLACTION_DOTNET_USERCONTROLS的URL Action设置为启用,在注册表中更改它。

+0

我直接在IE中使用它。更改注册表项确实会更改Internet区域中的行为。 – voam 2009-12-30 15:25:00

+0

这意味着你没有使用“ActiveX”控件,而是使用UserControl。由于安全原因,UserControl在Internet区域中被阻止:http://blogs.msdn.com/ieinternals/archive/2009/10/09/DotNet-UserControls-Do-Not-Load-in-IE8-Internet-Zone.aspx – EricLaw 2009-12-30 16:24:56

+0

@EricLaw谢谢你,我认为这是正确的答案。 – ChrisW 2010-08-30 21:53:06

相关问题