ActiveX控件如何去除在Web使用时的安全警告

原创 2006年05月24日 18:25:00

    Web上使用ActiveX控件时,用两种安全防护,一是下载,二是使用。对于未签名的ActiveX控件,在IE的选项中有相应处理。我们不考虑下载,假定控件已在用户机注册(可能是额外的小安装包),因为未签名,所以仍会弹出警告提示,但实际上,在控件中实现适当接口,可以去除该警告。 

    以MFC的ActiveX控件实现为例,可以简单如下方式做到: 

    1:在CXXXCtrl(继承于COleCtrol)的声明类中:DECLARE_INTERFACE_MAP() 之前添加代码: 

    BEGIN_INTERFACE_PART(ObjectSafety, IObjectSafety)
    INIT_INTERFACE_PART(COleControl, ObjectSafety)
        STDMETHOD(GetInterfaceSafetyOptions)(REFIID, DWORD __RPC_FAR *, DWORD __RPC_FAR *);        
        STDMETHOD(SetInterfaceSafetyOptions)(REFIID, DWORD, DWORD);
    END_INTERFACE_PART(ObjectSafety)

    2:在CXXXCtrl实现类中添加代码:

    BEGIN_INTERFACE_MAP(CXXXCtrl, COleControl)
       INTERFACE_PART(CXXXCtrl, IID_IObjectSafety, ObjectSafety)
    END_INTERFACE_MAP()

    STDMETHODIMP_(ULONG) CXXXCtrl::XObjectSafety::AddRef( )
    {
       METHOD_PROLOGUE(CXXXCtrl,ObjectSafety);
       return pThis->ExternalAddRef();
    }

    STDMETHODIMP_(ULONG) CXXXCtrl::XObjectSafety::Release( )
    { 
         METHOD_PROLOGUE(CXXXCtrl,ObjectSafety);
        return pThis->ExternalRelease();
   }

    STDMETHODIMP CXXXCtrl::XObjectSafety::QueryInterface( REFIID iid, LPVOID FAR* ppvObj )
    {   
         METHOD_PROLOGUE(CXXXCtrl, ObjectSafety);
         return pThis->ExternalQueryInterface(&iid,ppvObj);
   }

    HRESULT STDMETHODCALLTYPE CXXXCtrl::XObjectSafety::GetInterfaceSafetyOptions  
(REFIID riid, DWORD __RPC_FAR 
*pdwSupportedOptions, DWORD __RPC_FAR *pdwEnabledOptions)
   {
     UNREFERENCED_PARAMETER(riid);
     *pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA|
     INTERFACESAFE_FOR_UNTRUSTED_CALLER;
     *pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA|
     INTERFACESAFE_FOR_UNTRUSTED_CALLER;
     return (S_OK);
   }

   HRESULT STDMETHODCALLTYPE CXXXCtrl::XObjectSafety::SetInterfaceSafetyOptions( 
      REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions)
    {
       UNREFERENCED_PARAMETER(riid);
       UNREFERENCED_PARAMETER(dwOptionSetMask); 
       UNREFERENCED_PARAMETER(dwEnabledOptions);
       return (S_OK);
   }

   就是如此简单!

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

web上面开发安全控件使用Activex控件

首先要说明的是 web上用activex是门被抛弃的技术。为什么这么说,主要基于以下几个原因:1.功能过于强大,强大到一旦安装,他所具有的权限可以做任何事,极易被人利用做坏事(相信大家都有浏览网页后莫...

web上面开发安全控件使用Activex控件

首先要说明的是 web上用activex是门被抛弃的技术。为什么这么说,主要基于以下几个原因:1.功能过于强大,强大到一旦安装,他所具有的权限可以做任何事,极易被人利用做坏事(相信大家都有浏览网页后莫...
  • ghevinn
  • ghevinn
  • 2013年10月22日 13:36
  • 3276

已安全化的ActiveX控件卸载时出现"DllUnregisterServer函数出错,错误代码:0x80070002"问题解决

关于ActiveX控件实现安全的初始化和脚本请查看这篇博文        当已经使用命令行卸载已经实现安全的初始化和脚本的ActiveX控件时会看到出现“DllUnregisterServe...

在Web中如何使用Windows控件(ActiveX)

转自:http://www.cnblogs.com/zhuweisky/archive/2012/09/14/2683599.html,特别鸣谢 在Web中如何使用Windows控件? ...

使用VS2010开发ActiveX(MFC)控件(3)——添加接口及WEB调用

使用VS2010开发ActiveX(MFC)控件(3)——添加接口及WEB调用   2012-02-21 09:36:16|  分类: 技术 |  标签:mfc  activex  |举报|字号...

使用VS2010开发ActiveX(MFC)控件(3)——添加接口及WEB调用

上一节实现了控件在页面中的加载及界面显示,这一节开始在上一节的基础上添加接口供WEB调用。 手动在CMainDlg.h中添加一方法: public:          LONG SetPar...

使用VS2010开发ActiveX(MFC)控件(3)——添加接口及WEB调用

上一节实现了控件在页面中的加载及界面显示,这一节开始在上一节的基础上添加接口供WEB调用。 手动在CMainDlg.h中添加一方法: public:          LONG SetPar...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ActiveX控件如何去除在Web使用时的安全警告
举报原因:
原因补充:

(最多只允许输入30个字)