- 6
- 0
- 约1.32万字
- 约 10页
- 2017-08-11 发布于重庆
- 举报
关于ActiveX控件的开发
第一章 COM组件的安全性问题
当我们实现的COM对象,或者ActiveX控件在浏览器中调用的时候,往往会出现警告框,提示不安全的控件正在运行。这是因为浏览器安全策略所限定的,浏览器认为只有“安全的对象”才能够被执行。
所谓安全的对象就是指那些不访问本地资源的对象,例如不会去读注册表,不会写文件等等。一个满足条件的对象通过支持IObjectSafety接口告诉浏览器,自己是合法的。
下面就简单的介绍一下怎么在C#中实现对于IObjectSafety接口的支持。
?
思路
C/C++d的程序可以直接在SDK中找到IObjectSafety的定义,所以需要支持的话非常容易。C#比较麻烦,因为我们没有办法获得IObjectSafety的定义,不过没有问题,我们可以按照IObjectSafety在SDK中的定义,在C#的工程中重新定义该接口。
如果大家了解COM机制一定会知道,所谓借口的定义之出现在类型库中,与实现无关。而判断一个接口唯一性就是定义接口时指定的UUID。此外自己重新定义时需要保证接口中没有函数的参数与返回值必须与原定义一致即可。
我们的做法就是,找到ObjSafe.idl,然后复制其中的UUID,利用这个UUID在C#中定一个interface IObjectSafety,并且申明其中的两个函数;定义完成之后,让需要检查安全接口的组件继承该接口,并在该组件内部实现IObjectSafety的两个函数,按照要求做适当的返回,那么用这个组件包装的COM对象在IE中调用就被认为是安全的了。
?
第一次尝试
按照上面的思路,我们开始进行尝试
idl中的接口定义
[?object,?uuid(CB5BDC81-93C1-11cf-8F20-00805F2CD064),?pointer_default(unique)]interface IObjectSafety : IUnknown{?HRESULT GetInterfaceSafetyOptions(??[in]? REFIID?riid,?????// Interface that we want options for??[out] DWORD?*?pdwSupportedOptions,?// Options meaningful on this interface??[out] DWORD *?pdwEnabledOptions);??// current option values on this interface
?
?HRESULT SetInterfaceSafetyOptions(??[in]? REFIID?riid,?????// Interface to set options for??[in]? DWORD??dwOptionSetMask,??// Options to change??[in]? DWORD??dwEnabledOptions);??// New option values}
IObjectSafety接口定义
??? 因为接口中存在指针,所以直接采用Int32的整型形式,用到了unsafe code。
?[Guid(CB5BDC81-93C1-11cf-8F20-00805F2CD064)]?public interface IObjectSafety?{??// methods??unsafe void GetInterfacceSafyOptions(???System.Int32 riid,???System.Int32* pdwSupportedOptions,???System.Int32* pdwEnabledOptions);??void SetInterfaceSafetyOptions(???System.Int32 riid,???System.Int32 dwOptionsSetMask,???System.Int32 dwEnabledOptions);?}继承
?public class MyControl : System.Windows.Forms.UserControl,IObjectSafety
实现
??// implement functions of IObjectSafety??public unsafe void GetInterfacceSafyOptions(System.Int32 riid,System.Int32* pdwSupportedOptions,System.Int32* pdwEnabledOptions)??{
????????...??}??public void SetInterfaceSaf
您可能关注的文档
最近下载
- 学会欣赏艺术养成对美的感知习惯.pptx VIP
- 二手书微信小程序的设计与实现.docx VIP
- 2025年及未来5年中国超硬石膏粉市场数据分析及竞争策略研究报告.docx
- 技术进步与社会生活的变化 教学设计 高二历史统编版(2019)选择性必修2+经济与社会生活.docx VIP
- 专题12.27 全等三角形几何模型分类专题(全章专项练习)(学生版) 2024-2025学年八年级数学上册基础知识专项突破讲与练(人教版).pdf VIP
- 梗阻性黄疸患者护理查房.pptx VIP
- 梗阻性黄疸患者护理查房.pptx VIP
- 2025-2026学年八年级上册数学 人教版 期末综合复习试题(含答案).pdf VIP
- 2025年湖南有色金属职业技术学院单招职业技能考试题库及答案.docx VIP
- 加油站安全专项整治工作方案范文集合5篇.doc VIP
原创力文档

文档评论(0)