在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全
http://www.cnblogs.com/carekee/articles/5332797.html
在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全
在EOS6的项目中,如果采用VC++开发的ActiveX,那么第一次运行的时候,IE中就会提示,“在此页上的ActiveX控件和本 页上的其他部分的交互可能不安全,你想允许这种交互吗?”在网上找了很多资料,原理介绍的多,但是真正如何做,介绍的比较少,因此这里把实际的步骤一步一 步的记录下来了,供大家参考。
1.1 去除ActiveX访问时的安全提示
当ActiveX第一次被访问时,会出现如下提示框:
这是IE浏览器的安全机制造成的,我们可以采用下面的步骤来去除这个提示信息:
1.1.1 在CDemoCtl的头文件.h中增加对objsave的引用
#include <objsafe.h>
1.1.2 在其protected声明区增加如下内容:
//去掉安全警告 BEGIN
DECLARE_INTERFACE_MAP()
BEGIN_INTERFACE_PART(ObjectSafety, IObjectSafety)
STDMETHOD(GetInterfaceSafetyOptions)(REFIID riid, DWORD __RPC_FAR *pdwSupportedOptions, DWORD __RPC_FAR *pdwEnabledOptions);
STDMETHOD(SetInterfaceSafetyOptions)(REFIID riid, DWORD dwOptionSetMask, DWORD dwEnabledOptions);
END_INTERFACE_PART(ObjectSafety)
//去掉安全警告 END
1.1.3 在CDemoCtl的实现类.cpp的IMPLEMENT_DYNCREATE(CActivexFirstCtrl, COleControl)这一行后增加如下内容:
//去掉安全警告 BEGIN
BEGIN_INTERFACE_MAP(CHJFaceActiveCtrl, COleControl)
INTERFACE_PART(CHJFaceActiveCtrl, IID_IObjectSafety, ObjectSafety)
END_INTERFACE_MAP()
// Implementation of IObjectSafety
STDMETHODIMP CHJFaceActiveCtrl::XObjectSafety::GetInterfaceSafetyOptions(
REFIID riid,
DWORD __RPC_FAR *pdwSupportedOptions,
DWORD __RPC_FAR *pdwEnabledOptions)
{
METHOD_PROLOGUE_EX(CHJFaceActiveCtrl, ObjectSafety)
if (!pdwSupportedOptions || !pdwEnabledOptions)
{
return E_POINTER;
}
*pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA;
*pdwEnabledOptions = 0;
if (NULL == pThis->GetInterface(&riid))
{
TRACE("Requested interface is not supported.\n");
return E_NOINTERFACE;
}
// What interface is being checked out anyhow?
OLECHAR szGUID[39];
int i = StringFromGUID2(riid, szGUID, 39);
if (riid == IID_IDispatch)
{
// Client wants to know if object is safe for scripting
*pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER;
return S_OK;
}
else if (riid == IID_IPersistPropertyBag
|| riid == IID_IPersistStreamInit
|| riid == IID_IPersistStorage
|| riid == IID_IPersistMemory)
{
// Those are the persistence interfaces COleControl derived controls support
// as indicated in AFXCTL.H
// Client wants to know if object is safe for initializing from persistent data
*pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA;
return S_OK;
}
else
{
// Find out what interface this is, and decide what options to enable
TRACE("We didn't account for the safety of this interface, and it's one we support...\n");
return E_NOINTERFACE;
}
}
STDMETHODIMP CHJFaceActiveCtrl::XObjectSafety::SetInterfaceSafetyOptions(
REFIID riid,
DWORD dwOptionSetMask,
DWORD dwEnabledOptions)
{
METHOD_PROLOGUE_EX(CHJFaceActiveCtrl, ObjectSafety)
OLECHAR szGUID[39];
// What is this interface anyway?
// We can do a quick lookup in the registry under HKEY_CLASSES_ROOT\Interface
int i = StringFromGUID2(riid, szGUID, 39);
if (0 == dwOptionSetMask && 0 == dwEnabledOptions)
{
// the control certainly supports NO requests through the specified interface
// so it"s safe to return S_OK even if the interface isn"t supported.
return S_OK;
}
// Do we support the specified interface?
if (NULL == pThis->GetInterface(&riid))
{
TRACE1("%s is not support.\n", szGUID);
return E_FAIL;
}
if (riid == IID_IDispatch)
{
TRACE("Client asking if it's safe to call through IDispatch.\n");
TRACE("In other words, is the control safe for scripting?\n");
if (INTERFACESAFE_FOR_UNTRUSTED_CALLER == dwOptionSetMask && INTERFACESAFE_FOR_UNTRUSTED_CALLER == dwEnabledOptions)
{
return S_OK;
}
else
{
return E_FAIL;
}
}
else if (riid == IID_IPersistPropertyBag
|| riid == IID_IPersistStreamInit
|| riid == IID_IPersistStorage
|| riid == IID_IPersistMemory)
{
TRACE("Client asking if it's safe to call through IPersist*.\n");
TRACE("In other words, is the control safe for initializing from persistent data?\n");
if (INTERFACESAFE_FOR_UNTRUSTED_DATA == dwOptionSetMask && INTERFACESAFE_FOR_UNTRUSTED_DATA == dwEnabledOptions)
{
return NOERROR;
}
else
{
return E_FAIL;
}
}
else
{
TRACE1("We didn't account for the safety of %s, and it's one we support...\n", szGUID);
return E_FAIL;
}
}
STDMETHODIMP_(ULONG) CHJFaceActiveCtrl::XObjectSafety::AddRef()
{
METHOD_PROLOGUE_EX_(CHJFaceActiveCtrl, ObjectSafety)
return (ULONG)pThis->ExternalAddRef();
}
STDMETHODIMP_(ULONG) CHJFaceActiveCtrl::XObjectSafety::Release()
{
METHOD_PROLOGUE_EX_(CHJFaceActiveCtrl, ObjectSafety)
return (ULONG)pThis->ExternalRelease();
}
STDMETHODIMP CHJFaceActiveCtrl::XObjectSafety::QueryInterface(REFIID iid, LPVOID* ppvObj)
{
METHOD_PROLOGUE_EX_(CHJFaceActiveCtrl, ObjectSafety)
return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
}
//去掉安全警告 END
在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全相关推荐
- 当前安全设置禁止运行该页中activeX控件,该页无法正常显示
运行services查看服务时,当前安全设置禁止运行该页中activeX控件,该页无法正常显示:打开一个project文件时,也显示 当前安全设置禁止运行该页中activeX控件,该页无法正常显示. ...
- java多文件上传plupload控件实现多图片上传(二)
接上篇 java多文件上传plupload控件实现多图片上传(一) 续写PluploadUtil 和 Plupload PO类,以及后台的action. 至此,可实现多文件上传功能. 上传文件Acti ...
- java 批量上传图片插件_java多文件上传plupload控件实现多图片上传(一)
使用的是plupload-2.1.2 控件.网上资源挺多的,很好下载. plupload 官方地址 : http://www.plupload.com/ plupload 示例: http://www ...
- 开发Activex控件安全
2019独角兽企业重金招聘Python工程师标准>>> 2.浏览该网页后,发现页面提示"在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全.你想允许这种交互 ...
- ArcToolBox 提示ActiveX控件问题解决办法
ArcToolBox 工具提示ActiveX控件问题 本章导读:这个章节是关于 ArcMap 工具的一个无关痛痒的 Bug 进行处理.如果你的操作系统是Win10 ,并且 ArcGIS 是版本是10. ...
- Win32页上的所有控件属性与方法
Win32页上的所有控件.该页控件是在32位Win系统中的一些基本控件,如果你选择开发CLX程序,则在控件面板上不会显示该页 TTabControl 属性 DisplayRect:只定该控件客户区的一 ...
- VC使用ActiveX控件常见问题
转自:http://lingchuangsong.blog.163.com/blog/static/126932322008631104133309/ 一方面,它表示将你联系到Microsoft.In ...
- [转]C#开发ActiveX控件,.NET开发OCX控件案例
引自:百度 http://hi.baidu.com/yanzuoguang/blog/item/fe11974edf52873aaec3ab42.html 讲下什么是ActiveX控件,到底有什么 ...
- 使用C#开发ActiveX控件[Obsolete]
附件下载(源代码+安装文件+教程) 0. 前言 ActiveX控件以前也叫做OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中.使用ActiveX插件,可以轻松方 ...
最新文章
- 什么是pretext tasks?
- 机器学习入门学习笔记:(2.4)线性判别分析理论推导
- 清除被占用的8080端口,否则npm run dev无法正常运行
- 2/2 常用函数:标准库函数
- 她小时候被指没数学天分,后来竟成为首位获数学大奖的女人;她的生命很短暂却惊艳了全世界...
- mysql 数据增量备份_MySQL数据库之mysql全量备份、增量备份实现方法
- web小知识与问题串烧(html,css,js)
- 百度旗下网站暗藏恶意代码——劫持用户电脑疯狂“收割”流量
- 当我们在谈论HTTP队头阻塞时,我们在谈论什么?
- 计算机二级front和rear什么意思,关于计算机二级考试内容
- 单字双字三字_古人取名有什么讲究?为什么有时候单字多有时候双字多?
- TextView显示省略号问题
- [APIO2018] New Home 新家
- 海康威视设备SDK调用,是否支持IP通道的思考
- 360N5S:360N5S刷机
- web压力测试-Web Bench
- IDEA 2020/7/28更新特性速览 - 对于各框架的支持,版本控制工具,docker,构建工具等的支持
- 日本机载激光雷达测深进展(二)机载激光雷达测深经验
- 云客网解析网站内容采集的注意要点
- 【专栏独家】详解微信朋友圈广告:会不会成为腾讯的新印钞机?
热门文章
- 小程序有三大痛点,何解?
- 手机锁屏弹出通知 php,Notification通知在OPPO手机上不弹出提示?
- 2021最新版JAVA开发面试那些事儿~(结尾有字节、华为面试内容)
- prod()与cumprod()区别cumsum()
- 【计算机组成原理】中央处理器(一)—— CPU 的功能与基本结构
- 计算机应用基础I单选题,I12秋计算机应用基础14作业及答案.doc
- Vue面试题重难点总结
- springboot+vue+elementui课堂在线答疑网站系统java+python
- 为什么快手消息显示服务器萌,快手萌面Kmoji上线 一键生成个人专属AR形象
- (7) 浅学 “爬虫” 过程 (概念+练习)