• 编写、发布安全的ActiveX控件


    Posted on 2006-10-23 17:28 yxm 阅读(1456) 评论(0)  编辑 收藏 引用 所属分类: COM/ATL/WTL

    一、指出ActiveX控件对于脚本与数据初始化是安全的

    1.  将下行添加到组件的继承列表的末尾:

    public  IObjectSafetyImpl < CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER  |  INTERFACESAFE_FOR_UNTRUSTED_DATA >

    2.  将下行添加到COM 映射:

    COM_INTERFACE_ENTRY(IObjectSafety)

    二、电子签名
    可使用 MAKECERT 和 CERT2SPC 实用工具生成测试 Software Publisher Certificate。请注意,此测试 SPC 对软件发布无效,但可用于测试代码签名

    1.  创建证书文件:

    makecert  /sv  "私钥文件.pvk"  /"CN=公司的名字"  "证书文件名.cer" //注意保留扩展名

    2.  转换cer格式为spc格式:

    cert2spc   dream.cer   dream.spc   

    3.  给cab文件签名

    signtool signwizard

    4.  在web页上嵌套入签名的CAB文件

    <BODY>
    <OBJECT ID="PolyCtl" 
    CLASSID
    ="CLSID:4CBBC676-507F-11D0-B98B-000000000000"
    CODEBASE
    ="http://example.sq-soft.com/mydir/myctl.cab#version=1,0,0,1">
    </OBJECT>

    </BODY>

    CODEBASE 也可以直接指向 OCX 或 DLL 文件:


    三、创建CAB文件(摘录自MSDN)

    1.  创建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

    其中“thiscab”是一个关键字,表示 CAB 包含此 DLL,也可通过指定一条绝对或相对路径,从一个 HTTP 位置下载所需的 DLL,例如:

    file-win32-x86=http://example.microsoft.com/mydir/NEEDED.DLL 

    关键字“file-win32-x86”将平台标识为 x86 特定的。

    可通过在 Windows 资源管理器中的文件上单击鼠标右键来获取文件的版本号。从显示的列表中选择“属性”,然后在显示的对话框中选择“版本”选项卡。有时需要在文件版本中额外插入一个 0。例如,在对话框中 ATL.DLL 的版本号显示为 2.00.7024。而在 INF 文件中,这变为 2, 00, 0, 7024。

    “DestDir”是将要加载文件的目录所在的位置:11 指定系统目录为 WINDOWS/SYSTEM 或 WINNT/SYSTEM32;10 指定 Windows 目录、WINDOWS 或 WINNT。如果未指定任何 DestDir(典型情况),则代码安装在固定的 OCCACHE 目录中。

    “clsid”是将要安装的控件的 CLSID。

    2.  创建CAB文件

    创建了 INF 文件后,运行 CABARC 实用工具以创建 CAB 文件。应在包含源文件的目录下运行 CABARC。在命令行上,按源文件出现在 INF 中的顺序排列它们,并将 INF 文件放在最后。例如:

    CABARC -6144  n  MYCTL.CAB NEEDED1.DLL NEEDED2.DLL MYCTL.OCX MYCTL.INF

    应在包含源文件(INF、OCX 和 DLL 文件)的目录下运行 CABARC。将在 CAB 文件中存档的文件应该按它们在 INF 文件中列出的同一顺序在命令行中列出。在上面的示例中,INF 文件应该将 NEEDED1.DLL 列在第一位,接下来是 NEEDED2.DLL,然后是 MYCTL.OCX。

    -s 选项在压缩文件中保留用于代码签名的空间。n 命令指定希望创建 CAB 文件。

  • 相关阅读:
    topcoder srm 445 div1
    topcoder srm 440 div1
    topcoder srm 435 div1
    topcoder srm 430 div1
    topcoder srm 400 div1
    topcoder srm 380 div1
    topcoder srm 370 div1
    topcoder srm 425 div1
    WKWebView强大的新特性
    Runtime那些事
  • 原文地址:https://www.cnblogs.com/czjone/p/1886920.html
Copyright © 2020-2023  润新知