COM组件开发实践(三)

前面两篇文章分别介绍了MFC ActiveX应用程序和使用ATL开发ActiveX的简单实例,但还有两个问题需要解决:
1)标记ActiveX控件为安全的控件 2)对控件进行数字签名。本文将结合这两点进行简单的介绍。

Building a Safe ActiveX Control

      如何不想办法将控件标记为安全的,就会在Web页面与控件进行交互时出现如下图的警告信息:


 附件: 您所在的用户组无法下载或查看附件

    下面将分别介绍在MFC ActiveX和ATL中如何标记一个控件为安全的控件。

    要标记一个MFC ActiveX控件为安全,可以仿照下面代码修改而得:

Code


这里值得注意的一个地方是DllUnregisterServer函数,在这段代码中,我是将

Code


这两句代码放在

Code


这两句代码的前面,如果你查阅MSDN,将会发现它上面的顺序和我是相反的,这应该是微软的一个错误代码,如果按照MSDN的代码来写,则你使用regsvr32 -u CardScan.ocx反注册时会报下面的错误:


 附件: 您所在的用户组无法下载或查看附件

调整为我所说的顺序就没问题了。

2)要标记使用ATL写的ActiveX控件为安全的控件,这比MFC要简单的多,只需要在控件头文件中增加几行代码就可以了:

Code


然后在COM映射表中增加一项:

Code


Building a Signed ActiveX Control

      ActiveX控件是个危险的东西,如果不对其合法性进行数字签名和验证,IE是会拒绝其安装的。

      工具包准备:CABARC.exe, cert2spc.exe, makecab.exe, makecert.exe, signcode.exe(或新版本中的signtool),以上小工具都可以在VS的安装路径下"Common7"Tools"Bin找到,或去微软官方网站上下载。

ActiveX控件的安装过程中,一部分工作就是自注册,这需要控件在VERSIONINFO结构中定义OLESelfRegister值,你可以对资源文件进行编辑如下

Code


打包为CAB文件

因为ActiveX控件要放在网站上供客户下载到本地,因此压缩是必需的。一段典型的html代码如下:

Code


CODEBASE就指明了要下载的压缩包,其中包含了oxc,dll控件等所需要的文件。

通常CAB文件包含了一个INF文件,它用来描述CAB文件的所有细节信息,下面举个简单例子,代码如下:

Code


至于打包就不赘述了,详尽的图解过程请看如何给ActiveX数字签名(Step by Step, Delphi)




(文/phinecos  出处/博客园)

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Visual Studio.NET] 的这些文章也感兴趣:

Julie Lerman谈论如何在Silverlight中将InkPesenter中的图片转换为PNG文件
必须学习的10项.NET技术
从DataView中生成Excel报表的方案(C#)
超COOL的图片展示:jQuery实例
.NET开发最新参考资料推荐_20080316
微软开发主管临别诤言
在TransactionScope中优先使用Oracle的.NET驱动
在VBScript和JScript里使用Windows PowerShell
Building Domain Specific Languages on the CLR
在.net中轻松掌握Windows窗体间的数据交互(二)