为什么实现IObjectSafety没有任何效果?

3
我们有一个实现了IObjectSafety接口的ActiveX对象,以表明它对脚本是安全的。它从受信任的站点安装。但我们仍然会收到IE的投诉,即此页面上的控件不安全。

运行我们的ActiveX的网站管理员不愿启用未标记为安全的脚本控件,即使它们位于受信任区域。

我们的cab及其所有组件都已签名(通过签署每个进入msi安装程序的dll,最终让未经验证的发布者消失了)

有人有关于如何强制IObjectSafety工作的想法吗?

1
被误解了它的意图。 “请点击确定按钮,我是安全可靠的。保证。” - Hans Passant
一个专门为指定应用程序编写的ActiveX在受控环境中运行和从未知来源下载东西之间存在很大的区别。话虽如此,我个人不理解IObjectSafety的目的,因为显然有意造成损害的人会说他们的对象是安全的。 - dan-
1个回答

4

请确保您正在使用适用于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,但这是我找到的唯一一个明确指出 Guid 很重要的链接。在我的代码中做出这些改变后,IE不再抱怨。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接