• Activex控件的IObjectSafety接口问题


    我的05年做流氓插件的时候,就注意到了这个问题,只要注册表加入 类似的就可以  HKEY_CLASSES_ROOTComponent    Categories{7DD95801-9882-11CF-9FA9-00AA006C42C4}
       HKEY_CLASSES_ROOTComponent    Categories{7DD95802-9882-11CF-9FA9-00AA006C42C4}
       HKEY_CLASSES_ROOTCLSID{"your controls GUID"}Implemented    Categories{7DD95801-9882-11CF-9FA9-00AA006C42C4}
       HKEY_CLASSES_ROOTCLSID{"your controls GUID"}Implemented    Categories{7DD95802-9882-11CF-9FA9-00AA006C42C4}   
    7DD95801-9882-11CF-9FA9-00AA006C42C4为安全空间的ID。 如果是ATL的工程,很简单需要在控件中实现IObjectSafety接口, class CLoginCtl :     .... ,     public IObjectSafetyImpl<CLoginCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA> { ... BEGIN_COM_MAP(CLoginCtl) COM_INTERFACE_ENTRY(IObjectSafety) END_COM_MAP() ... } 或者 BEGIN_CATEGORY_MAP(CLoginCtl) IMPLEMENTED_CATEGORY(CATID_SafeForInitializing) msdn http://support.microsoft.com/kb/168371/en-us
    07年给启明星辰做天清汉马SSLVPN客户端的时候,当时老孟强烈建议使用mfc的ocx,所以就没做atl的,当时使用还是vc6,虽然已经有了vc8。 时隔5年之后,我又开始写SSLVPN客户端,发现vc6写的ocx在IE8上经常崩溃,而且还要处理DEP的问题,只能使用atl8之后的版本。 在初始化控件之前,IE会调用IObjectSafety::SetInterfaceSafetyOptions强制ocx处理不信任的数据初始化和调用。 public IObjectSafetyImpl<CXXXAgent, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA >, 诡异的是vc8,vc9可以执行public IObjectSafetyImpl<CXXXAgent, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACE_USES_DISPEX | INTERFACE_USES_SECURITY_MANAGER>, vc10只能执行public IObjectSafetyImpl<CXXXAgent, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA >。
  • 相关阅读:
    汉斯·季默:布拉格现场
    天使在美国第二部:重建
    欢迎访问我的独立博客 tracefact.net (2019.1.30)
    Kafka 分布式消息系统
    Webpack入门
    《.NET之美》消息及勘误
    MacBook笔记本微信视频聊天没有声音怎么办?
    libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.9-1.el6.x86_64
    List stream 对象 属性去重
    JS遍历对象的方式
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/4015161.html
Copyright © 2020-2023  润新知