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);
   }

   就是如此简单!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

已安全化的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调用

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

ActiveX控件安全初始化之一:实现ISafeObject接口(转)

 ActiveX控件安全初始化之一:实现ISafeObject接口(转) ActiveX控件在签名以后,仍然被IE浏览器默认安全级阻止而无法安装。 使用代码签名证书签名后的控...

如何将MFC ActiveX 控件标记为可安全编写脚本和初始化

遇到一个关于Activex调用的问题,网页端要调用本地的程序,必须借助Activex来进行调用,但是实际实现的时候又发现会出现提示说,程序不是安全的这种问题,所以到网上搜索了一下,找到底下的这篇文章,...

阻止IE弹出“在此页上的 ActiveX 控件和本页上的其他部份的交互可能不安全。你想允许这种交互吗?”对话框

//在包含DllRegisterServer和DllUnregisterServer函数的cpp文件中加入以下代码 //加入一个新的头文件 #include //以下GUID为为当前使用的组件的G...
  • aizeng
  • aizeng
  • 2011-12-12 16:03
  • 10095

ActiveX控件实现安全的初始化和脚本

原文链接:http://blog.csdn.net/waxgourd0/article/details/7411620 要想创建一个能够在IE中成功加载而没有“不安全”的警告或者错误提示信息的A...

Atl ActiveX网页控件的数字签名和安全验证

项目需求中,有需求:从Javascript中生成ActivexObject对象,然后调用其方法和响应其事件。例如: 但是new ActiveXObject("myActivexCtrl.progId"...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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