• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 200分,跪求ocx安全警告的解决方法!!??解决后再开贴给分!

200分,跪求ocx安全警告的解决方法!!??解决后再开贴给分!

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了ocx添加方法,mscomm32.ocx注册方法,查看ocx方法,ocx注册方法,ocx文件的注册方法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 200分,跪求ocx 安全警告的解决方法!!??解决后再开贴给分!
描述:

1、使用vc的 MFC ActiveX ControllWinzad 做的一简单控件(无界面)
 2、在html页面中使用。
 问题:
 1、ocx打包在一客户端程序(使用前需安装)安装包,客户端程序中将该ocx注册到用户注册表!!
   这种方法与制作cab文件,自动下载是否一样效果??
  
 2、如果1成立,则怎么将我的ocx让客户机认为是安全的?也就是当该ocx运行时不出现IE的安全提示!??
  
 
 


解决方案1:

按照代码的注释要求修添加程序代码就可以避免上述的问题了。我的所有控件都是用该代码段,没有问题。
/**************** 
// 在ActiveX的类声明文件XXXCtrl.h的头部中添加如下代码
#include <objsafe.h>
// 在ActiveX的类声明文件C..Ctrl.h的类声明内部添加如下代码
// 接口映射
DECLARE_INTERFACE_MAP()
BEGIN_INTERFACE_PART(ObjSafe, IObjectSafety)
STDMETHOD_(HRESULT, GetInterfaceSafetyOptions) ( 
REFIID riid,
DWORD __RPC_FAR *pdwSupportedOptions,
DWORD __RPC_FAR *pdwEnabledOptions
);
STDMETHOD_(HRESULT, SetInterfaceSafetyOptions) ( 
REFIID riid,
DWORD dwOptionSetMask,
DWORD dwEnabledOptions
);
END_INTERFACE_PART(ObjSafe);
*********************************************** *******************/
/**********************
// 在ActiveX的类实现文件XXXCtrl.cpp中添加如下代码,并将CXXXCtrl更换为你的ActiveX的类名称
// IObjectSafety的接口映射
BEGIN_INTERFACE_MAP( CXXXCtrl, COleControl )
INTERFACE_PART(CXXXCtrl, IID_IObjectSafety, ObjSafe)
END_INTERFACE_MAP()
//////////////////////////////////// /////////////////////////////////////////
// IObjectSafety 成员函数
// AddRef, Release, QueryInterface
ULONG FAR EXPORT CXXXCtrl::XObjSafe::AddRef()
{
METHOD_PROLOGUE(CXXXCtrl, ObjSafe)
return pThis->ExternalAddRef();
}
ULONG FAR EXPORT CXXXCtrl::XObjSafe::Release()
{
METHOD_PROLOGUE(CXXXCtrl, ObjSafe)
return pThis->ExternalRelease();
}
HRESULT FAR EXPORT CXXXCtrl::XObjSafe::QueryInterface(
REFIID iid, void FAR* FAR* ppvObj)
{
METHOD_PROLOGUE(CXXXCtrl, ObjSafe)
return (HRESULT)pThis->ExternalQueryInterface(&iid, ppvObj);
}
const DWORD dwSupportedBits = 
INTERFACESAFE_FOR_UNTRUSTED_CALLER |
INTERFACESAFE_FOR_UNTRUSTED_DATA;
const DWORD dwNotSupportedBits = ~ dwSupportedBits;
/////////////////////////////////////////////////////// //////////////////////
// CXXXCtrl::XObjSafe::GetInterfaceSafetyOptions
HRESULT STDMETHODCALLTYPE 
CXXXCtrl::XObjSafe::GetInterfaceSafetyOptions(
REFIID riid, 
DWORD __RPC_FAR *pdwSupportedOptions, 
DWORD __RPC_FAR *pdwEnabledOptions
)
{
METHOD_PROLOGUE(CXXXCtrl, ObjSafe)
HRESULT retval = ResultFromScode(S_OK);
// 接口是否存在
IUnknown FAR* punkInterface;
retval = pThis->ExternalQueryInterface(&riid, (void * *)&punkInterface);
if (retval != E_NOINTERFACE) // 接口存在
{
punkInterface->Release(); // 释放引用
}
// We support both kinds of safety and have always both set,
// regardless of interface.
*pdwSupportedOptions = *pdwEnabledOptions = dwSupportedBits;
return retval; // E_NOINTERFACE if QI failed
}
//////////////////////////////////////////////////////////// /////////////////
// CXXXCtrl::XObjSafe::SetInterfaceSafetyOptions
HRESULT STDMETHODCALLTYPE 
CXXXCtrl::XObjSafe::SetInterfaceSafetyOptions( 
REFIID riid,
DWORD dwOptionSetMask,
DWORD dwEnabledOptions
)
{
METHOD_PROLOGUE(CXXXCtrl, ObjSafe)
// 接口是否存在
IUnknown FAR* punkInterface;
pThis->ExternalQueryInterface(&riid, (void * *)&punkInterface);
if (punkInterface) // 接口存在
{
punkInterface->Release(); // 释放引用
}
else // 接口不存在
{ 
return ResultFromScode(E_NOINTERFACE);
}
// Can't set bits we don't support.
if (dwOptionSetMask & dwNotSupportedBits)
{ 
return ResultFromScode(E_FAIL);
}
// Can't set bits we do support to zero
dwEnabledOptions &= dwSupportedBits;
// (We already know there are no extra bits in mask. )
if ((dwOptionSetMask & dwEnabledOptions) != dwOptionSetMask)
{
return ResultFromScode(E_FAIL);
} 
// Don't need to change anything since we're always safe.
return ResultFromScode(S_OK);
} 

解决方案2:

1。ActiveX在网上下载就用CAB包(记得要用证书签名)
2。好象还要用到
IObjectSafety::GetInterfaceSafetyOptions
和
IObjectSafety::SetInterfaceSafetyOptions

解决方案3:

如果你的ActiveX确实是不安全的,有这种方法吗?

解决方案4:

wangweixing2000(星(inspiration(灵感))) 
谢谢啊,我也正好找,

解决方案5:

利用
http://msdn.microsoft.com/library/CHS/vccore/html/_atl_step_7.3a_.putting_the_control_on_a_web_page.asp
中的技术来避免安全性提示对话框。

解决方案6:

1。制作成cab自动下载会提示用户是否安装控件,直接注册就不会提示了
2。要实现自己IObjectSafety接口
关于这个接口msdn有完整的例子程序

解决方案7:

在你ocx空间的接口实现类的 .h 中继承类列表的末尾,并在上一行中添加一个逗号: 
public IObjectSafetyImpl<CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
将下行添加到 .h 中的 COM 映射: 
COM_INTERFACE_ENTRY(IObjectSafety)
即可


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 写了个ocx,里面设了属性和方法
  • 关于ocx带返回值的方法
  • 请教:VS2005ocx添加方法的问题
  • ocx空间调用Create方法崩溃
  • 编译出的OCX如何能在VBS中调用其方法
  • OCX定义的方法如何返回句柄?谢谢
  • ocx隐藏后调用方法失败?
  • OCX的方法有结构体数组参数,应怎么弄
  • ocx里面添加方法的顺序有关系吗
  • OCX开发,如何实现带字符串参数的方法?

相关文章

  • 2017-06-04 BHOIDISPATCH::invoke中如何阻断消息
  • 2017-06-04 高分求《ActiveX开发人员指南》
  • 2017-06-04 200分!!找InsideATL代码,提供有分,提供线索也有分
  • 2017-06-04 关于自定义控件的问题
  • 2017-06-05 请问:怎样在自己的程序中停止其他程序???
  • 2017-06-04 用ATL写一个COM的DLL,参数是char怎么办?
  • 2017-06-05 高分请教!急!请问各位:在一个程序中,如何能关闭自己,并在关闭自己后,自动启动另一程序?
  • 2017-06-04 wince播放器问题
  • 2017-06-04 太简单的问题了,都不好意思问,但是就搞不定
  • 2017-06-04 请问,如何在自己的ActiveX控件里插入已有的ActiveX控件

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 建立MFC一个对话框时不小心关闭了工具栏怎么打开
    • 客户端访问com组件有哪3中方法?
    • 如何建立EXCEL文件
    • 如何调试dll?
    • WTL开发应用程序,增加中文菜单项乱码?
    • vc60编译的程序和vc50的程序
    • 等待求救!SOS!
    • 请教CWebbrowser2安全级别设置问题
    • 怎么获取IHTMLFrameBase接口?或者怎样获得frame的marging,先谢谢了
    • 谁能够为我解释一下下面两条命令的意思

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有