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

   就是如此简单!

activex去除IE警告框的几个步骤

近期做了个activex,几个点记录下,留作纪念1,集成iobjectsafety接口2,修改注册表,加入clsid和允许的域名        RegSetString(HKEY_CURRENT_US...
  • tompaz
  • tompaz
  • 2011年04月12日 14:44
  • 911

[转]ActiveX控件去除IE警告框的方法

1、介绍        如果你曾经在网页或者ASP中使用过com对象,你可能会发现,有时候会出现这样讨厌的对话框      这是因为你的控件没有被标记为安全的,对于初始化不安全或者对于脚本不安全,甚至...
  • hot_flygui
  • hot_flygui
  • 2010年10月26日 14:56
  • 2402

MFC ActiveX 去掉安全警告

1替换HTML头 2在ActiveX的控件声明中加入(h)//去掉安全警告 BEGIN DECLARE_INTERFACE_MAP() BEGIN_INTERFACE_PART(ObjectSafet...
  • zblue78
  • zblue78
  • 2009年02月13日 11:30
  • 2680

使你的ActiveX控件执行时不弹出安全性提示

我们编写一个ActiveX控件在IE中运行,一般会弹出一个安全提示,如何避免这种情况?下面是我在参考前人的文章后,总结出“在浏览器中执行时不弹出警告的ActiveX控件”的两种编写方法,予以备忘。注意...
  • zhyt_213
  • zhyt_213
  • 2011年07月11日 12:04
  • 2881

编写浏览器不弹出警告的ActiveX控件

   我们在编写ActiveX控件时,如果用在浏览器中,经常都会弹出现在运行的脚本不安全的提示,如果给客户使用,将会带来极大不便。 按照MSDN的介绍通常有两种一种是实现IObjectSafe接口,一...
  • Tunix126
  • Tunix126
  • 2006年10月17日 15:54
  • 660

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

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

在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全

在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全
  • boise
  • boise
  • 2016年08月25日 13:03
  • 6641

ActiveX去除IE警告框方法

在classview下,向目录的第一个.h文件(即App启动头文件)中加入以下内容://创建Component Categories中的初始化安全和脚本安全项HRESULT CreateCompone...
  • snz
  • snz
  • 2006年11月17日 08:50
  • 1101

JS添加可信站点、修改ActiveX安全设置,禁用弹出窗口阻止程序的方法

为了满足将网站加入到可信站点中,使用系统的控件,在弹出窗口的时候不用提示用户。可以通过下面的方法实现: 首先,了解一下可以设置的值和含义。 可信站点的注册表项目录 HKEY_CURRENT_USER...
  • QHH_QHH
  • QHH_QHH
  • 2015年10月12日 18:54
  • 817

VC++开发的ActiveX如何加入安全机制,避免IE中提示“在此页上的ActiveX控件和本页上的其他部分的交互可能不安全,你想允许这种交互吗?”

转自 http://www.cnblogs.com/zdxster/archive/2011/01/27/1945868.html 在EOS6的项目中,如果采用VC++开发的ActiveX,那么第一...
  • QHH_QHH
  • QHH_QHH
  • 2016年09月12日 16:33
  • 1016
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ActiveX控件如何去除在Web使用时的安全警告
举报原因:
原因补充:

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