用vb做了一个activex控件,想在web上访问,开了web服务后,只有自己机器上可以访问,
其他机器访问后控件都显示的叉。
访问控件,需要签名吗?如果把ie安全进行设置,不签名可以访问吗?

解决方案 »

  1.   

    用VB将第三方控件打成CAB包(在WEB页面上使用) 
     
    用VB将第三方控件打成CAB包(在WEB页面上使用) 
    由于工作的需要,笔者需要在WEB页面上显示CAD文件(在客户机器上不装CAD)。由于时间紧迫,现写控件根本来不及,没办法在网上搜寻了一圈。找到了一个软件,大小大概有8兆左右。可以用来浏览DWG类型的文件。用了一下,发现其用的是一个DLL类型的控件,并带有两个附属的DLL文件。 如果要在WEB页面上使用控件,则控件需要打成CAB类型的包。上网找了一个打CAB包的工具,名字叫IExpress。不过如果用这个工具打包需要手工编写INF文件,INF文件的结构比较复杂,手工编写容易出现错误。想了一下,觉得VB自带的打包工具可以制作CAB文件包。不过VB的打包工具开始必须选择一个VB的工程。所以用VB建了一个跟控件名称一样的工程,编译了一下,然后用VB自带的工具进行打包,打包的类型选择Internet类型的安装包。到选择文件这一步的时候,要将多余的文件去掉,因为这个第三方控件不是VB编写的,所以根本不用带VB的运行库。将第三方控件的主控件DLL和两个附属的DLL都加到包中,然后开始打包。 包打完之后写了个测试页,在本机上试了一下没有问题(因为本机已经安装了控件),所以在其他的机器上测试了一下,不能正常安装控件,页面上显示一个红叉。查看IE临时文件夹下的控件安装日志文件,内容显示控件不能正常注册。到网上查找了一些资料,没有找到原因。后来用VC自带的Dependency Walker工具查看了一下控件的DLL,发现里边还包含了另外三个DLL,分别为:msvcr71.dll、msvcp71.dll、mfc71.dll。将这三个文件也加进了包里,测试之后,一切正常。 在WEB页面上使用控件的脚本如下: <HTML> <HEAD> <TITLE>BravaACX.CAB</TITLE> </HEAD> <BODY> <!-- 如果这页上的任何控件需要授权,您必须 创建一个授权包文件。 运行 LPK_TOOL.EXE 来创建 要求的 LPK 文件。 LPK_TOOL.EXE 将从 ActiveX SDK 中找到, http://www.microsoft.com/intdev/sdk/sdk.htm. 如果您有 Visual Basic 6.0 CD, 您可以在\Tools\LPK_TOOL 目录下找到它。 下面是对象标记的例子: <OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331"> <PARAM NAME="LPKPath" VALUE="LPKfilename.LPK"> </OBJECT> --> <OBJECT ID="ctlBravaACXView" CLASSID="CLSID:1BE73243-A85F-4385-939D-14D4845A286A" CODEBASE="BravaACX.CAB#version=5,1,0,5" width="60%" height="60%"> <param name="Filename" value="db_samp.dwg"> </OBJECT> </BODY> </HTML> 打包CAB控件的INF文件内容为: ;BravaACX.OCX 的 INF 文件 ;DestDir 可以为 10 则在 Windows 目录,为 11 则在 Windows\System(32) 目录,或为空则在 Occache 目录。 [version] signature="$CHICAGO$" AdvancedINF=2.0 [DefaultInstall] CopyFiles=install.files RegisterOCXs=RegisterFiles [RInstallApplicationFiles] CopyFiles=install.files RegisterOCXs=RegisterFiles [DestinationDirs] install.files=11 [SourceDisksNames] 1=%DiskName%,BravaACX.CAB,1 [Add.Code] BravaACX.dll=BravaACX.dll Autorec.dll=Autorec.dll BACXView.ini=BACXView.ini Dwg2DL.dll=Dwg2DL.dll myrdrv.ini=myrdrv.ini MFC71.dll=MFC71.dll msvcr71.dll=msvcr71.dll msvcp71.dll=msvcp71.dll [install.files] BravaACX.dll=BravaACX.dll Autorec.dll=Autorec.dll BACXView.ini=BACXView.ini Dwg2DL.dll=Dwg2DL.dll myrdrv.ini=myrdrv.ini MFC71.dll=MFC71.dll msvcr71.dll=msvcr71.dll msvcp71.dll=msvcp71.dll [SourceDisksFiles] BravaACX.dll=1 Autorec.dll=1 BACXView.ini=1 Dwg2DL.dll=1 myrdrv.ini=1 MFC71.dll=1 msvcr71.dll=1 msvcp71.dll=1 [BravaACX.dll] file-win32-x86=thiscab RegisterServer=yes clsid={1BE73243-A85F-4385-939D-14D4845A286A} DestDir=11 FileVersion=5,1,0,5 [Autorec.dll] file-win32-x86=thiscab RegisterServer=no DestDir=11 FileVersion=1,3,0,43 [BACXView.ini] file-win32-x86=thiscab RegisterServer=no DestDir=11 FileVersion=0,0,0,0 [Dwg2DL.dll] file-win32-x86=thiscab RegisterServer=no DestDir=11 FileVersion=1,3,0,47 [myrdrv.ini] file-win32-x86=thiscab RegisterServer=no DestDir=11 FileVersion=0,0,0,0 [MFC71.dll] file-win32-x86=thiscab RegisterServer=no DestDir=11 FileVersion=7,10,3077,0 [msvcr71.dll] file-win32-x86=thiscab RegisterServer=no DestDir=11 FileVersion=7,10,3052,4 [msvcp71.dll] file-win32-x86=thiscab RegisterServer=no DestDir=11 FileVersion=7,10,3077,0 [RegisterFiles] %11%\BravaACX.dll                            作者:崔占民                      EMAIL:[email protected]  
      

  2.   

    http://www.daima.com.cn/Info/83/Info30171/
      

  3.   

    谢谢各位帮助,按照他上面做了,但是问题还是没有解决。
    客户端打开后还是一个叉。
    但是我发现如果客户端用myie打开的话,可以显示控件。但是总不能让客户去下个myie吧!
    到底怎么解决呢?
      

  4.   

    用vb自带的打包工具,作成intetnet安装包(在包类型对话框中设置),至于调用可以看安装包所在文件夹下的htm文件
      

  5.   

    是这样的,客户端显示一个红叉,需要设置IE安全性,首先在Internet选项的安全页上,选择“受信任站点”,加一个你的网站地址后,同时选择下面的“自定义级别”,选级别为低。同时将相关的防火墙设置打开。
      

  6.   

    去购买数字签名,给CAB包签名或者自己弄个临时的测试证书
    本例使用Microsoft visual studio .Net 2003开发工具。所以你必须拥有Microsoft visual studio .Net 2002以上版本的环境。 
    1、  获得软件发行证书(测试) 
    第一步:开始菜单->运行,输入cmd.exe。打开windows 2000的命令提示符环境窗口。 第二步:输入CD C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin,进入该目录,用dir命令你可以看到signcode.exe、makecert.exe和cert2spc.exe程序。注意:以上路径根据你机器Microsoft.Net的安装路径不同而异。 第三步:创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。 输入makecert -sk Mending  -n "CN=门丁派" c:\testMending.cer。 就会在你的C:生成testMending.cer文件。 说明:参数-n指定主题的证书名称。此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。注意这里的CN必须大写。-sk指定主题的密钥容器位置,该位置包含私钥。如果密钥容器不存在,系统将创建一个。输入makecert -?可以查看其他参数的用法。第四步:创建发行者证书 (SPC)。注意,发行者证书测试工具通过一个或多个 X.509 证书创建发行者证书 (SPC)。Cert2spc.exe 仅用于测试目的。可以从证书颁发机构(如 VeriSign 或 Thawte)获得有效的 SPC。输入命令:cert2spc c:\testMending.cer c:\testMending.spc,在C:盘生成证书文件。至此,你已经拥有了仅用于测试的软件证书。其实,我们开发的程序或ActiveX控件只要仅用于企业内部,完全可以用这种办法作数字签名,使你的控件可以在浏览器里自动下载,而不必去专门的证书办法机构获得证书。在上面打开的dos窗口里,输入如下命令: signcode /spc c:\testMending.spc /k Mending c:\MyActiveX.cab 至此,已经对成功对MyActiveX.cab文件签名。可以查看文件的属性,查看数字签名。 也可不使用 CAB 文件而直接签名 DLL 和 OCX。CAB 文件的优势在于压缩,而且如果与 INF 文件一起使用,它可将所有必要的代码绑定在一起。           '''''这些软件在Visual Studio里好像也有