我自己写了一个OCX控件,放在网页服务器上,然后我在我在客户端测试,结果发现此控件已经下载到C:\WINNT\Downloaded Program Files 目录下了,但是浏览此网页上,网页上却显示一个错误的图标,不知道该如何解决,谢谢各位了,请帮帮忙!!
小弟感激不尽!我的代码如下:<OBJECT id=xQuery width=531 height=330
classid="clsid:AC29EEF9-9B03-4C9F-8E2D-03A2AE23878E"
codebase="xQueryProj.ocx#version=1,0,11,1" VIEWASTEXT</OBJECT>

解决方案 »

  1.   

    以下是针对BCB的除实现脚本安全和初始化安全不一样外,其余都一样,至于delphi如何实现脚本安全和初始化安全,不知道一 用代码在ocx中实现脚本安全和初始化安全,很简单,在*impl.h文件中在class ATL_NO_VTABLE...中添加如下语句//以下为增加的,标记为脚本安全和初始化安全
    BEGIN_CATEGORY_MAP(TSaftTestImpl)
      IMPLEMENTED_CATEGORY(CATID_SafeForScripting)
      IMPLEMENTED_CATEGORY(CATID_SafeForInitializing)
    END_CATEGORY_MAP()一 实现数字签名,如果你有钱,你可以申请正式的数字签名,否则可以采用如下做法,虽然下载安装控件时会警告无信任根,但在IE默认安全设置下载和运行完全没有问题,不会有安全警告。1、创建一个自己的证书文件:
    makecert /sv "Record.PVK" /n "CN=SinoWave" dream.cer
    这里,Record.PVK表示新创建的私人密钥保存文件名
          SinoWave是你想显示的公司名
          dream.cer是你创建最后的证书文件名
    这些根据你自己的要求填写,最后得到Record.PVK和dream.cer两个文件。其中,运行过程中需要输入私人密钥的保护密码(sw),一定要输入一致,不要出错。2、转换cer格式为spc格式(可以省略),得到dream.spc文件。 cert2spc dream.cer dream.spc3、用VS6工具中的 cabarc生成internet分发的CAB包,
    cabarc.exe N DataTransfer.cab DataTransfer.ocx4、同时制作分发代码(.htm,其中包含使IE可以自动下载安装包的代码)。
    现在得到了2个文件DataTransfer.CAB和DataTransfer.htm。
    .htm中包含类似如下的代码:
    <OBJECT ID=" DataTransfer " CLASSID="CLSID: CA466D54-0684-49D2-B0C3-DD7E09EA76D3" CODEBASE="http://192.9.200.8/DataTransfer.CAB#version=1,0,0,0"></OBJECT>
    5、给CAB文件签名
    运行signcode,signcode运行后会出现数字签名向导,首先选DataTransfer.CAB,下一步后会出现签名选项,一种是典型,一种是自定义。选择自定义,这样才能从文件选择证书,选择前面制作的dream.spc,再下一步是选择私钥文件,选择Record.PVK,输入私人密钥的保护密码,选择散列算法,一般用md5就可以了,下一步是选择其他证书,直接下一步,填写一下这个控件的声明,用户用ie浏览的时候,会弹出证书说明,再下一步是加盖时间戳,例如http://timestamp.sheca.com/timestamp
    加盖时间戳时你要联到网上
     
    6、用chktrust检查是否正确
    chktrust -v DataTransfer.CAB7、将签名后的DataTransfer.CAB和DataTransfer.htm复制到IIS的某个目录下。并在IE中打开DataTransfer.htm文件进行测试。三 如果你用到附加文件,如使用midas,将附加文件和*.inf文件一起打包,对cab签名。htm文件中codebase指向cab。
    注意一定要将*.inf文件一起打包。