5-8万年薪顶级嵌入式,京沪深就业地 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  ATL/ActiveX/COM

高分求救,我用atl作了一个activex控件,这个空件调用了一个动态连接库,

楼主chao1977(樱桃小丸子)2003-09-20 22:00:33 在 VC/MFC / ATL/ActiveX/COM 提问

高分求救,我用atl作了一个activex控件,这个空件调用了一个动态连接库,我把ocx和dll文件放在服务器上,我现在想在客户服务器上用怎末办,帮帮忙,很急 问题点数:0、回复次数:8Top

1 楼chao1977(樱桃小丸子)回复于 2003-09-20 22:03:46 得分 0

是不是需要证书Top

2 楼warmchang(风滑过的痕迹)回复于 2003-09-21 10:59:07 得分 0

做成cab自动下载包,把dll下载到system32目录即可!  
   
  证书的申请需要到专门的网站!  
  你只能申请免费使用的(有时间限制),否则需要付费!  
   
  成功以后,你可以把申请好的证书导出为XXX.cer文件,然后再用cert2spc命令生成XXX.spc文件;然后运行打包程序signcode.exe,选择你刚才生成的XXX.spc证书文件即可!Top

3 楼warmchang(风滑过的痕迹)回复于 2003-09-21 11:00:06 得分 0

为MFC   和   ATL控件创建签署的CAB文件  
   
  如果您计划通过Internet销售   MFC控件和ATL   控件,您应该将其打包成签署的小巧(Cabinet   -CAB)   文件。签署文件确保用户下载您的控件时源代码是安全的。一个CAB文件包含一个您的控件及其安装信息(比如,都需要哪些动态链接库DLL和OCX一起安装)的压缩版本。    
   
  创建和签署CAB文件的工具包含于Visual   C++   5.0   光盘中的   CAB&SIGN   目录下面。   该目录下的公用程序在您安装Visual   C++时并不会自动地一起安装,因此您必须将CAB&SIGN   目录下面的内容拷贝到您的硬盘驱动器中。    
   
  在签署文件之前,您需要有一个软件出版商证明书(Software   Publisher   Certificate)。您必须向证书发放机构(Certification   Authority)申请自己的证书。利用CAB&SIGN目录下面的工具,您能够创建一个用于测试的测试证明书,但是该证明书不能用于签署发售的代码。有关申请软件出版商证明书的信息,请参考步骤   1   。    
   
  下面是创建签署CAB文件的步骤   :    
   
  1   获得一个软件出版商证明书   (您只需要这一次申请就可以永久使用)    
  2   创建   CAB   文件    
  3   签署您的文件    
  4   将签署过的   CAB文件嵌入一个Web页(可选项)获得一个软件出版商证明书    
  在签署文件之前,您需要有一个软件出版商证明书(SPC)。为此,您必须向证书发放机构(Certification   Authority)提出申请。在申请过程中,您必须生成一个密匙对,并向证书发放机构提供证明信息,比如说您的名字、地址以及公共密匙。而且,您必须作出具有法律约束力的誓言:您不能也将不会发布您知道或者应该知道其中包含了病毒的软件,或者是恶意破坏用户的机器或代码。    
   
  有关如何得到软件出版商证明书更详尽的信息,请参考Signing   Code   with   Microsoft's   Authenticode。若要申请该证书,请参考   Digital   Certificates   for   Authenticode   ;若要创建一个测试证书来测试签署文件,请参考Making   A   Test   Software   Publisher   Certificate.    
   
  证书发放机构生成一个符合工业标准X.509证书格式(包含版本3扩展)的软件出版商证明书   。该证书确定并且包含您的公共密匙,并以证书发放机构存档作为参考,把一个拷贝以电子邮件的方式返回给您。收到该证书之后,您应该在所有要发布的、用私人密匙签署的软件当中,包含一份该证书的拷贝。    
   
  获得一个软件出版商证明书  
  您可以使用Visual   C++   5.0   光盘中CAB&SIGN目录下的   MAKECERT和   CERT2SPC   公用程序,做一个测试软件出版商证明书。注意,该测试软件出版商证明书对真正的软件发布无效,但是能够被用来测试您代码的签署。    
   
  比如,要做一个私人密匙文件MYKEY.PVK   和一个公司证书CERT.CER,则运行公用程序MAKECERT,其命令如下:    
   
  C:\CAB&SIGN\MAKECERT    
  -u:     MyKey    
  -n:   CN   =   MySoftwareCompany    
  -k:   MYKEY.PVK   CERT.CER  
   
  MyKey   是您的密匙名,MySoftwareCompany   是您的公司名。注意公用程序   MAKECERT   在命令行选项中区分大小写,因此您必须使用小写的-u、-n以及-k;-n选项的值必须是大写的CN=。    
   
  做一个名为CERT.SPC测试软件出版商证明书,则运行公用程序CERT2SPC,命令如下:    
   
  C:\CAB&SIGN\CERT2SPC   C:\CAB&SIGN\ROOT.CER   CERT.CER   CERT.SPC  
  注意CERT.SPC文件是利用您刚使用MAKECERT创建的CERT.CER文件以及CAB&SIGN目录下面的ROOT.CER文件创建的   。    
   
  创建一个   CAB文件  
  这一部分描述如何创建能在互连网上分派ATL和MFC组件的CAB文件。如果您要了解有关CAB文件的更多信息,请参考Cabinet文件参考书目(File   Reference),该文件位于平台软件开发工具包(Platform   SDK,包含在Visual   C++   5.0联机文档中)的设置和系统管理服务(Setup   and   System   Management   Services)部分的\Setup   API\Overview\Cabinet   Files目录下面。    
   
  创建一个   CAB文件:    
   
  创建一个INF文件。    
  运行公共例程CABARC(在光盘上的CAB&SIGN目录中)。例如:    
  C:\CAB&SIGN\CABARC   -s   6144  
  n   MYCTL.CAB   NEEDED1.DLL   NEEDED2.DLL   MYCTL.OCX   MYCTL.INF  
   
  CABARC   创建了一个名为MYCTL.CAB的CAB文件。    
   
  您必须在您的源文件(INF、OCX以及DLL文件)目录下面运行CABARC。存档在CAB   文件中的文件需要在命令行列出,次序同它们在INF文件中的完全一致。在上例中,INF文件的列出次序是NEEDED1.DLL,然后   是NEEDED2.DLL,最后是MYCTL.OCX。    
   
  -s选项为代码签署保留空间。n   命令指定您想创建的是CAB文件。CABARC   命令和选项的说明可以查看,其方式是在命令行键入CABARC:    
   
    C:\CAB&SIGN\CABARC    
  创建一个INF文件  
  INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如DLL或者其它OCX)。一个INF文件就捆绑了CAB压缩文件所有的必须文件。   缺省情况下,与现有硬盘中文件版本号相同的文件不被下载。要了解有关INF文件及其选项(包括如何创建独立于平台的INF文件)的详细情况,请参考万维网站Packaging   Component   Code   for   Automatic   Download,或者参考平台软件开发工具包(Platform   SDK,包含在Visual   C++   5.0联机文档中)的设置和系统管理服务(Setup   and   System   Management   Services)部分的\Setup   API\Overview\INF   Files目录下的内容。    
   
  作为示例,下面的INF是用来为ATL多边形控件创建一个CAB文件的。   您可以通过从Visual   C++   5.0光盘下载ATL   POLYGON示例程序来创建POLYGON.DLL,并创建一个最小版本。创建该最小版本另外需要一个DLL即   ATL.DLL。ATL.DLL要先于POLYGON.DLL注册,因此首先把ATL.DLL   放置到INF当中。    
   
  ;   Sample   INF   file   for   POLYGON.DLL  
  [version]    
  ;   version   signature   (same   for   both   NT   and   Win95)   do   not   remove  
  signature="$CHICAGO$"  
  AdvancedINF=2.0  
   
  [Add.Code]  
  polygon.dll=polygon.dll  
  atl.dll=atl.dll  
   
  ;   needed   DLL  
  [atl.dll]  
  file-win32-x86=thiscab  
  FileVersion=2,00,0,7024  
  DestDir=11  
  RegisterServer=yes    
   
  [polygon.dll]  
  file-win32-x86=thiscab  
  clsid={4CBBC676-507F-11D0-B98B-000000000000}    
  FileVersion=1,0,0,1    
  RegisterServer=yes  
  ;   end   of   INF   file  
   
  该INF指定了系统需要安装特定版本的ATL.DLL。如果系统中还没有该文件,则需要从和该INF一起创建的CAB文件下载。"thiscab"   是一个关键字,意指包含该INF的CAB文件。您也可以从网上下载所需要的DLL文件,只要指定一个HTTP   网址即可,绝对路径或者相对路径都可以,比如:    
   
  file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL    
  关键字"file-win32-x86"   指定平台是   x86。    
   
  得到一个文件的版本号的过程是:在Windows   NT或者Windows   95   Explorer中右键点击该文件;从弹出列表中选择Properties,然后在接着弹出的对话框中选择版本标签。有时,您可能需要在文件版本中插入一个额外的0   。比如,对话框中显示ATL.DLL的版本号是2.00.7024,在INF文件中则变为2,00,0,7024   。    
   
  "DestDir"指的是装载目录或者文件的地址:   11   指定为系统目录   WINDOWS/SYSTEM   或者   WINNT/SYSTEM32;   10   规定为窗口目录、WINDOWS或者WINNT。如果没有指定DestDir(典型情况),则代码从固定的OCCACHE目录装载。    
   
  "clsid"   指的是要安装控件的CLSID。    
   
  创建   INF文件后,再运行CABARC公用程序(在Visual   C++   5.0光盘上的CAB&SIGN目录中)创建CAB文件。您必须在您的源文件目录下面运行CABARC。存档在CAB   文件中的文件需要在命令行列出,次序同它们在INF文件中完全一致。比如,从上面的INF文件为多边形控件做一个CAB文件,需要使用下面的命令   :    
   
    C:\CAB&SIGN\CABARC   -s   6144   POLYGON.CAB   ATL.DLL   POLYGON.DLL   POLYGON.INF  
  该CAB文件包含ATL.DLL和POLYGON.DLL的压缩版本,以及将它们展开到POLYGON.INF   文件所需要的信息。    
   
  有关创建一个下载MFC控件的CAB文件的示例,请参考MFC   4.2b   Component   Download   Information.您需要包含在MFC控件中的DLL文件有MSVCRT.DLL,MFC42.DLL以及   OLEPRO32.DLL。    
   
  签署一个CAB文件  
  使用Code   Signing   Wizard签署一个CAB文件:    
   
  1.   运行公用程序   SIGNCODE   (在Visual   C++   5.0光盘的CAB&SIGN   目录下),启动Code   Signing   Wizard。    
  C:\CAB&SIGN\SIGNCODE  
  2.   在Code   Signing   Wizard对话框当中,点击Next前进到下一页。    
  3.   在您想签署那一个程序?   编辑框中,键入您想签署的CAB文件。    
  4.在您想在证书中使用什么名字?   编辑框中,键入您想在证书中使用的名字。    
  5.   点击Next,前进到下一页。    
  6.   在   您想将该程序签署在哪一个软件开发商证书下面?   编辑框中,键入软件开发商证书(SPC)文件名。    
  7.   在您要在该证书的哪一个文件中查找密码、密匙?   编辑框中,键入私人密匙(PVK)文件名。    
  8.   连续两次点击   Next前进到最后一页。    
  9.点击Sign,签署CAB   文件。您的文件将被数字化签署。    
  您可以不使用CAB文件直接签署您的DLL和OCX   。CAB文件的好处在于它是压缩的,而且,如果和INF文件一起使用,可以将所有必要代码捆绑在一起。    
   
  将签署过的   CAB文件嵌入一个Web页  
  ATL和MFC控件使用标签嵌入网页。在标签,您需要为该控件指定三个属性   :    
  ID   -   控件名称    
  CLASSID   -   控件的CLSID    
  CODEBASE   -   下载控件的位置。CODEBASE   可以指向许多不同的文件类型。    
  CODEBASE可以直接指向一个OCX   文件或者DLL文件:    
   
  CODEBASE="http://www.mysite.com/mydir/polygon.dll#version=1,0,0,1"  
  因为这仅仅完成了DLL或OCX文件的下载和安装,任何必要的DLL支持必须已经装载到了客户机上。    
   
  如果您在CAB文件中包含了选项版本号,它应该指向要下载的控件。例如,如果POLYGON.DLL有一个版本号1,0,0,1,则CAB文件的版本号也必须是1,0,0,1:    
   
  CODEBASE="http://www.mysite.com/mydir/polygon.cab#version=1,0,0,1"  
  如果您没有包含选项版本号,则不能替换同一个组件(如果它们出现在客户机上的话)的老版本号。Top

4 楼newkey007(无限天空 www.xDrv.com)回复于 2003-09-21 19:46:09 得分 0

dll   放资源中,   脱到临时目录,加载Top

5 楼black_fox(天堂隔壁)回复于 2003-09-21 22:43:51 得分 0

够详细了。。Top

6 楼chao1977(樱桃小丸子)回复于 2003-09-26 12:02:23 得分 0

无限天空   
  请详细说,如何放入临时目录Top

7 楼fanfyj(鸬鹚.NET)回复于 2003-09-26 12:23:59 得分 0

gzTop

8 楼doall4u(一切为你)回复于 2003-09-26 13:00:53 得分 0

in!Top

相关问题

  • Atl做的ActiveX控件的事件,在客户端如何调用?
  • servlet能调用Activex控件吗?
  • 在GINA中如何调用ActiveX控件?
  • lotuscript如何调用ActiveX控件?
  • 能否动态调用ActiveX控件??
  • 在ASP中怎样调用ActiveX控件
  • java调用vc的ActiveX控件
  • 请大侠赐教,ATL如何调用MFC做的ActiveX控件的事件接口
  • 请教,ATL写的ActiveX控件在IE中加载时接口的调用顺序.
  • mfc 调用ATL写控件。怎么获得ATL的时间?

关键词

  • visual c++
  • win32
  • 文件
  • 控件
  • 证书
  • atl
  • dll
  • 软件
  • 选项
  • cab

得分解答快速导航

  • 帖主:chao1977

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
x 提问