龙卷风

关键字:ASP,ActiveX控件,数字签名,安全

ActiveX控件运行在客户端。我们可以获得客户端的一些信息,如IC卡的信息,客户端的验证等等。但是ActiveX控件也有许多缺点:客户端的部署很困难,如客户端不能正确下载,下载了以后不能正确执行,下载的时候需要设置IE的安全级别等等。

更多的时候,我都在使用COM组件来扩展ASP的功能。准确地说,是服务端运行的Activex Dll组件。使用Server.CreateObject(“工程名.类名”)即可完成对组件的调用。这种方式问题很少,只要组件中以PUBLIC对外暴露方法既可。但是,有时候我们必须使用ACTIVEX 控件(*.OCX)嵌入到网页中执行来获取客户端的信息。这就有了许许多多的一些问题。

这是我们需要解决的N个问题(从简单到难)

1. 如何从服务端获取数据,传递到ActiveX控件中。

1) 初始化时使用参数绑定

2) 运行时得到数据

2. ActiveX控件得到客户端的信息,如何传递到服务端。

3. 安全性

1) 数字签名

2) 使用IOBJSAFE接口

好了,我们开始实例学习。

这个功能演示了如何制作一个简单的控件,并嵌入网页中执行。

工作环境:WINXP+VB6+IE6

我的IE安全设置为安全级别-中。所有的Activex选项设为启用。

打开vb6,新建ActiveX控件工程。

工程名:fOcx,用户控件名:UC1

为了方便,我们使用ActiveX控件接口向导…,菜单->外接程序->外接程序管理器->VB 6 ActiveX控件接口向导。确定即可。

打开ActiveX控件接口向导,下一步,对于可用名称和选定名称我们默认下一步,新建自定义成员,GetInfo类型:属性,下一步,共有方法中选择我们刚才添加的GetInfo,映射到控件选择TxtInfo,成员选择Text,下一步直到完成。代码窗口中会生成一些我们不需要的,删除,剩下的代码如下:

Option Explicit

'注意!不要删除或修改下列被注释的行!

'MappingInfo=txtinfo,txtinfo,-1,Text

Public Property Get GetInfo() As String

GetInfo = txtinfo.Text

End Property

Public Property Let GetInfo(ByVal New_GetInfo As String)

txtinfo.Text() = New_GetInfo

PropertyChanged "GetInfo"

End Property

'从存贮器中加载属性值

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

txtinfo.Text = PropBag.ReadProperty("GetInfo", "Text1")

End Sub

'将属性值写到存储器

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

Call PropBag.WriteProperty("GetInfo", txtinfo.Text, "Text1")

End Sub

OK,好了,我们编译成fOcx.ocx文件,然后F5直接运行,VB会打开一个测试页。如下:

E:"Program Files"Microsoft Visual Studio"VB98"UC1.html

同时,打开你的IE浏览器,看到了吧,你做的控件出现在了这个测试页中。

你可以打开测试页,可以看到ClsID,比如:890D1028-298B-45CF-9A64-6ED5A5BACBC9

因为VB编译的时候已经完成注册.所以无法模拟客户端没有安装该控件时出现的提示.

我们继续

使用regsvr32 F:"csdn_vb"com+_activeX"sample1"fOcx.ocx –u卸载

或者

打开注册表,在HKEY_CLASSES_ROOT"CLSID下面找到

890D1028-298B-45CF-9A64-6ED5A5BACBC9项,删除之,当然这种方式还有项存在而没有删除干净.

此时浏览http://yang/uc1.htm,由于IE中ActiveX设置为启动,所以,控件会显示出来。

下载后的ocx到哪里去了???

打开该目录(可能有所不同)E:"WINDOWS.0"Downloaded Program Files,看到了吧,fOcx.UC1文件在这个目录下.

原理:客户端下载该控件后,自动注册,然后放在上述这个目录下.这时我们可以打开注册表看看CLSID,呵呵,还是以前的那个.

我们可以右键看看fOcx.UC1的属性,看看相关内容,这里显示了该OCX所依赖的所有文件.所以,你的OCX尽量减少使用高级控件或者第三方的控件,否则,下载就有些问题了.

如果IE中关于ActiveX的选项设为禁用,那么浏览器就会出现对话框”当前安全设置禁止运行该页中的ActiveX控件.因此可能无法正确显示该页”,这个就需要其他的方式来处理了。

一般用户默认的都是禁用ActiveX选项,所以让用户自己设置不太合适。

未完待续

ASP与ActiveX控件交互实战(一)相关推荐

  1. [转]ASP中ActiveX控件的内嵌及调用

    懂ASP(Active Server Pages)的人很多,但能用ASP自如地调用ActiveX控件的人却不多:如果不调用ActiveX控件,则可以说微软当初设计ASP的初衷根本没有达到.众所周知,A ...

  2. 【转】激活 ActiveX 控件

    用户无法直接与 APPLET.EMBED 或 OBJECT 元素加载的 Microsoft ActiveX 控件交互. 用户激活这些控件的用户界面后才可以与这些控件交互. 本主题介绍了 Microso ...

  3. Asp.Net 中使用客户端Activex控件需要注意的事情

    案例:Asp.Net +VB制作的Activex控件 操作系统:Windows2003 +Sp1 现象1:通过     <OBJECT classid="CLSID:132A80F5- ...

  4. asp activex 读取服务器上的文件,webshell中上传asp文件调用服务器ActiveX控件溢出获取shell...

    Team: http://www.ph4nt0m.org Author: 云舒(http://www.icylife.net) Date: 2008-02-19 做windows系统渗透测试的时候有w ...

  5. Asp.net中使用ActiveX控件

    在asp.net项目项目中,使用了一个第三方的没有签名的ActiveX控件,代码如下: <SCRIPT LANGUAGE="JavaScript"> function ...

  6. 在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全

    http://www.cnblogs.com/carekee/articles/5332797.html 在此页上的 ActiveX 控件和本页上的其它部份的交互可能不安全 在EOS6的项目中,如果采 ...

  7. Asp.net中开发使用ActiveX控件

    从网上看来一篇网页中使用ActiveX的文章,正好用到.整理了一下以作备用 一 使控件实现 IObjectSafety 接口 1. 从 Visual Basic 6.0 光盘获取 OLE 自动化类型库 ...

  8. 请允许ActiveX控件和页面其他部分交互

    点击"自定义级别",将"安全设置-受信任的站点区域"中的:"对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本"和"下载 ...

  9. 在 .NET Compact Framework 2.0 中宿主 ActiveX 控件

    适用于: ActiveX Microsoft .NET Compact Framework 版本 2.0 摘要:了解如何在使用 .NET Compact 的应用程序中宿主 ActiveX 控件.本文提 ...

最新文章

  1. JS实现HTML上用button打开文件对话框
  2. Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析)——直接看例子就明白了!!!...
  3. charshow技术预研
  4. ./src/cuda.c:36: check_error: Assertion `0‘ failed
  5. 渔村小厂,如何成长为5G霸王?
  6. Spring Cloud(二) Consul 服务治理实现
  7. STM32----重温ADC测量电压值
  8. 单选按钮用法, 选择的值
  9. Visual C++中的异常处理浅析[轉]
  10. 洛谷 P2294 [HNOI2005]狡猾的商人
  11. Android 颜色如何从十六进制如何转成八进制 + 颜色库
  12. 第二阶段团队冲刺(二)
  13. 基于SSM的房屋租赁系统
  14. JavaScript中的call(),apply(),伪数组转化为数组
  15. 修改植物大战僵尸数据
  16. 斗兽棋在线游戏HTML5小游戏,js --斗兽棋游戏
  17. 定理证明器HOL的下载和安装
  18. 模糊照片怎么修复清晰?快来看看这两个方法
  19. 目标检测(CS230)
  20. Inventor冲压加强筋_Inventor教程:创建加强筋

热门文章

  1. c++函数不允许递归_面试算法题:不会递归函数被面试官刷了下来!
  2. java双机和集群的区别,java 分布式与集群的区别和联系
  3. Java Socket缓冲区
  4. 计算机三级嵌入式系统考试之矩阵键盘
  5. Python中字符串的startswith()和endswith()方法
  6. JavaSE----数组
  7. github 视觉测量_计算机视觉资源推荐:多人实时关键点(脸、手、足)检测库...
  8. android实现字体滚动,Android实现字幕滚动的方法
  9. 小波分析理论与matlabr2007实现_HHT变换基本理论
  10. 全国统筹区code与名称