实验前提:
1. 有一个可注册的COM组件(如ActiveX)
2. 最好能有一台Windows server 2003作为证书服务器,用来申请签名代码的证书(本例使用从证书服务器申请证书签名)
3. 代码签名工具
实验步骤:
1.编写INF安装配置文件,没怎么研究过INF的写法就不在这里做过多说明,贴个示例
; Sample INF file for CryptoAPI.DLL [version] ; version signature (same for both NT and Win95) do not remove signature="$CHICAGO$" AdvancedINF=2.0 [Add.Code] CryptoAPI.dll=CryptoAPI.dll CryptoAPI.inf=CryptoAPI.inf [CryptoAPI.dll] file-win32-x86=thiscab clsid={CB955C27-9709-482A-8EEF-1DF63722A970} FileVersion=1,0,0,1 RegisterServer=yes [CryptoAPI.inf] file=thiscab ; end of INF file
2.使用SigningTools里面的CABARC打包CAB,命令示例
"SigningTools/CABARC" -s 6144 n CryptoAPI.cab CryptoAPI.dll CryptoAPI.inf
4.运行signcode.exe,会进入签名向导,选择能够签名的证书及待签名的cab包即可
在填写描述和web位置后,可以在后面下载ActiveX控件时看到该提示信息
之后会提示签名成功.
5.验证代码签名,输入以下命令会有安装提示,如果出现发布者不受信任等情况,可能是签名证书的根证书未被添加到系统受信任根证书
可以尝试下载CA根证书,并添加至系统受信任证书库即可
"SigningTools/chktrust.exe" CryptoAPI.cab
6.在html中使用cab
<object classid="clsid:E14615FC-8DC0-47A6-9512-E57320F5752C" id="obj" CODEBASE="CryptoAPI.cab#Version=1,0,0,1"></object>7 .在刚填写的web位置同域名下的页面(其他网页测试会提示非安全的控件)测试即会提示下载注册控件,如果还未出现则还是可能为未将签名的根证书添加信任
注:SigningTools下载地址
参考:CODE PROJECT
在某些情况需要用户手动下载安装注册的话可以考虑EXE,
下面说下EXE安装文件注册ActiveX控件
使用Visual Studio的Setup Project即可轻松完成该步骤
新建了安装的工程后,可以通过以上方式查看User Interface,可修改安装步骤
一般将ActiveX安装到默认位置,则删除掉Install Folder步骤
然后查看File System,在指定文件夹放入ActiveX组件
在DLL的属性窗口中,修改Register的属性值为vsdrfCOMSelfReg