为什么不实现IObjectSafety有所作为?

时间:2011-12-07 22:41:23

标签: internet-explorer scripting activex security

我们有一个activex对象,它实现IObjectSafety以指示脚本安全。它从受信任的站点安装。但我们仍然得到IE投诉,该页面上的控件对于脚本编写是不安全的。

运行我们的activex的网站的管理员不愿意启用未标记为可安全编写脚本的控件,即使它是受信任的区域。

我们的出租车及其所有组件都已签名(我们最终通过签署进入msi安装程序的每个dll,使未经验证的发布者离开)

任何人都对如何打击IObjectSafety工作有什么想法?

1 个答案:

答案 0 :(得分:3)

确保您使用的是IObjectSafety的正确GUID。您的界面应如下所示,具有特定的GUID:

[ComImport]
// This GUID matters!
[Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IObjectSafety
{
    [PreserveSig]
    int GetInterfaceSafetyOptions(ref Guid riid, out int pdwSupportedOptions, out int pdwEnabledOptions);

    [PreserveSig]
    int SetInterfaceSafetyOptions(ref Guid riid, int dwOptionsMask, int dwEnabledOptions);
}

有一些链接概述了如何实施IObjectSafety,但这是我发现calls out the fact that the Guid matters的唯一链接。在我的代码中进行了更改后,IE不再抱怨了。