当前位置:文档之家› VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程开篇语:最近在弄ocx控件发布到网站上使用,就是用户在使用过程中,自动下载安装ocx控件。

(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。

)ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。

控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。

这里控件容器就是浏览器,用户不需要通过浏览器调用控件的属性或方法。

因此,开发面向Web 的ActiveX控件比开发桌面的控件还要简单些,所复杂的是如何将该控件很好地嵌入主页,使用户能正常浏览。

下面介绍这个问题。

一.创建MFC ActiveX项目1.打开VS2005新建MFC项目。

这里我们取名为“ActiveXDemo”。

2.输入项目名称为“ActiveXDemo”和项目位置。

点击“确定”按钮,打开向导对话框。

WoSign 免费提供的时间戳服务URL:/timestamp 时间戳服务非常重要,添加时间戳后,即使您的代码签名证书已经过期,但由于您的代码是在证书有效期内签名的,则时间戳服务保证了此代码仍然可信,最终用户仍然可以放心下载,使得即使代码签名证书已经过期,您也无需重签和重新发布已经签名的代码。

3.选择“控件设置”选项卡,具体设置可参考上图。

其它选项卡为默认设置。

最后点击“完成”按钮保存设置。

二.添加控件方法VC2005会为我们自动创建好MFC ActiveX程序框架,我们只要给该ActiveX控件添加方法即可。

现在我们给控件添加一个“AddFun”方法,这个方法是将两个数相加并返回结果。

1.点击“视图”,打开“类视图”窗口。

2.展开“ActiveXDemoLib”项,选中“_DActiveXDemo”项。

点击鼠标右键,选择“添加”下的“添加方法”。

3.打开添加方法向导窗口。

因为我们是添加一个加法方法,所以我们设置的返回类型为LONG 型,方法名设为AddFun,添加两个LONG类型参数Add1,Add2。

4.其它为默认设置,点击“完成”按钮完成添加方法。

接下来我们打开“解决方案资源管理器”打开“ActiveXDemoCtrl.cpp”文件。

5.打开代码视图,我们会发现VC2005已经为我们添加了一个“AddFun”方法,我们在方法内添加“return Add1 + Add2;”语句。

三、MFC Activex 安全问题:1、在默认环境下,编译的MFC Activex控件,只能在本地代码中运行,即在http://localhost/xxx/xxx.htm中执行,而在http://127.0.0.1/xxx/xxx.htm中提示无相关属性,需要设置其初始化和脚本运行的安全性ActiveX在远程IE页面上执行,需要实现安全接口。

在ATL写的ActiveX中,用IObjectSafety。

/kb/168371/en-us在MFC写的ActiveX中,直接修改注册表。

/kb/161873/en-usmfc实现的ocx,要在app实现文件中包括两个文件:在ActivexDemo.cpp 文件中实现以下方法代码现在控件就可以在自注册时就注册为安全控件了。

2、设置项目属性将配置类型设置成静态库(.lib)3、最后生成项目,ocx控件就产生了。

ActiveX打包与发布在VS2005或VS2008安装后发现路径**VC7\Common7\Tools\Bin\下有许多小工具,我对带有Cert的文件比较感兴趣。

经过研究,发现是有关证书和签名的,当然,该证书未被证书认证机构认可。

下面列出这些工具和我的使用心得。

1。

Makecert.exe ---证书创建工具2。

Cert2Spc.exe ---发行者证书测试工具3。

Signcode.exe ---文件签名工具(VS2008带的是signtool)一、ActiveX发布步骤在这里简单说明下,打包activeX需要制作证书,具体用到makecert 、cert2spc 、signtool 这三个VS提供的工具,工具在VS文件夹里面,以下制作过程需要在工具所在的文件夹下完成!1、单击"开始"-->"运行(R)"-->输入"cmd"-->回车-->进入到操作的控件所在的目录(需要将上面所说的工具,和ocx控件放到一个文件夹下);2、创建PVK文件(私人密匙文件),在命令行中输入"makecert -sk demo demo.pvk -n CN=XXXXXXX公司",然后回车;sk-表示主题的密钥容器位置,ss-主题的证书存储名称,n-证书颁发对象,r-证书存储位置;3、创建CER文件(公司证书),在命令行中输入"makecert -sk demo.pvk demo.cer",然后回车,如图8所示,若出现"Successed"提示,则会在E:\ demo目录下生成demo.cer文件;sk-表示主题的密钥容器位置,is-颁发者的证书存储名称,n-证书颁发对象,ic-颁发者的证书存储位置,-$-授权范围(用于代码签名);4、创建SPC测试软件出版商证明书,在命令行中输入"cert2spc demo.cer demo.spc",然后回车;5、创建INF文件,用记录本编辑以下信息:代码6、创建CAB文件,在命令行中输入"cabarc -s 6144 n demo.cab atl90.dll Polygon.dll demo.inf",-s 选项表示在压缩文件中保留用于代码签名的空间,n命令指定希望创建CAB 文件,然后回车;7、使用Code Signing Wizard签署一个CAB文件,在控制台输入signtool signwizard 进入到signtool窗体中;8、单击"下一步(N)"按钮,选择要进行数字签名的且已做成CAB包的文件demo.cab文件;9、选择好CAB包后单击"下一步(N)"按钮,在选择想要的签名类型里选择"自定议(C)"并单击"下一步(N)"按钮;10、接下来单击"从文件选择(F)"按钮,选择刚刚制作的demo.cer;11、在单击"下一步(N)",然后选择"CSP中的私钥(K)";13、在"证书路径中的证书"中选择"证书路径中的所有证书,包括根证书(C)",在"其它证书(可选)"中选择"包括在以下PKCS #7 证书(.p7b)文件中的证书(P):",并单击"浏览(R)..."按钮选择demo.spc文件,选择完后单击"下一步(N)"按钮;14、接下来在弹出的"数据描述"窗口中输入公司的名称和网址并单击"下一步(N)"按钮;15、现大部份工作都已完成,在接下来的一步当中是可选的操作,其作用只是为CAB加入时间戳,此步骤完全可以不做,VeriSign: /scripts/timstamp.dll;16、完成,单击"下一步(N)"按钮便可来到数字签名向导的最后一步,即操作总览,如图26所示,单击"完成"按钮便可大功告成;下面是微软代码签名证书(.pvk/.spc)签名指南的演示本使用指南演示如何使用WoSign代码签名证书来给微软代码签名,Thawte和VeriSign代码签名证书也是使用同样方法,只是使用不同的时间戳URL。

用户在在线申请代码签名证书时会生成证书私钥文件,如:myCert.pvk,而代码签名证书成功颁发后的证书文件为公钥文件,如:myCert.spc,又称:软件发行证书(Software Publishing Certificate) 。

代码签名证书一般都是采用公钥和私钥分离的两个文件方式,适合于DOS 命令行方式的代码签名。

如果您您希望把代码签名证书导入到Windows证书存储区中,从而简化签名操作,请参考:不同证书格式转换指南。

WoSign代码签名证书的根证书链为:UTN-USERFirst-Object - WoSign Code Signing Authority使用微软的SignCode.exe就可以对微软的代码进行签名,如果您没有此文件,点击这里下载。

Signcode.exe 可以使用DOS 命令行方式实现签名,我们推荐用户使用数字签名向导方式,简单方便。

请注意:如果您开发的ActiveX为IE加载项,请先数字签名每个CAB文件中的.dll和.ocx等文件,再把这些文件打包成.cab文件后再数字签名.cab文件,以确保所有IE加载项都被IE验证和信任,否则会显示“未验证”而可能影响正常运行。

具体签名向导过程如下:(1) 运行Signcode.exe ,要求您选择需要签名的文件,支持:可执行文件(*.exe; *.dll; *.ocx) ;Cabinet 打包文件(*.cab) 和目录文件(*.cat) ,如下图1 所示( 如:TestSign.cab) ,请注意:如果签名的文件已经有数字签名,则会被新的签名覆盖:(2) 点击“下一步”后,如下图2 所示,会要求您选择“签名类型”,缺省的“典型”签名类型;请选择“自定义” 签名类型:(3) 如下图3 所示,点击“从文件选择”签名证书( 公钥文件),如:WotoneCS.spc :(4) 点击“下一步”后,如下图4 所示,会要求您选择私钥文件,如:WotoneCS.pvk ,其他参数不用动:(5) 点击“下一步”后,如下图5 所示,会提示要求输入私钥密码:(6) 点击“下一步”后,如下图6 所示,会提示要求选择散列算法( 摘要算法、缩微图算法) ,缺省为sha1 ,也可以选md5 :(7) 点击“下一步”后,如下图7 所示,选择哪些证书包括到数字签名中,直接点击“下一步”即可,即选择缺省的包括根证书:(8) 如下图8 所示,要求填写该签名代码的功能描述,推荐一定要认真填写,因为此信息将会在最终用户下载此代码时显示,有助于最终用户了解此代码的功能以确定是否下载安装。

第一行“描述”是指此代码的功能文字描述,第二行“ Web 位置”则让最终用户点击文字描述来详细了解此代码的功能和使用方法等,本演示中的“ Web 位置”为WoTrust代码签名证书简介页面:(9) 点击“下一步”后,如下图9 所示,选中“将时间戳添加到数据中”,请使用:WoSign 免费提供的时间戳服务URL:/timestamp 时间戳服务非常重要,添加时间戳后,即使您的代码签名证书已经过期,但由于您的代码是在证书有效期内签名的,则时间戳服务保证了此代码仍然可信,最终用户仍然可以放心下载,使得即使代码签名证书已经过期,您也无需重签和重新发布已经签名的代码。

相关主题