我们有一个实现了IObjectSafety接口的ActiveX对象,以表明它对脚本是安全的。它从受信任的站点安装。但我们仍然会收到IE的投诉,即此页面上的控件不安全。
运行我们的ActiveX的网站管理员不愿启用未标记为安全的脚本控件,即使它们位于受信任区域。
我们的cab及其所有组件都已签名(通过签署每个进入msi安装程序的dll,最终让未经验证的发布者消失了)
有人有关于如何强制IObjectSafety工作的想法吗?
请确保您正在使用适用于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不再抱怨。