基于.NET编写的ActiveX自动升级的缺陷

网上有不少介绍了.NET编写ActiveX的文章,但是似乎没有提到过.NET ActiveX有一个无法通过网页自动升级的缺陷。

普通的ActiveX可以通过在网页上声明更新版本号来自动升级,无需客户端进行人工操作。例如:

_<OBJECT CLASSID="clsid:F2E88901-1CF4-11d3-8DB7-00C04FB6E8F6" CODEBASE="http://example.microsoft.com/myComponent.cab#Version=1,0,2,0"> _

但是.NET ActiveX此路不通。原因如下:

.NET ActiveX不可能脱离.NET运行时,因此非.NET程序在调用 .NET ActiveX 时,需要有一个中间代理"c:\windows\system32\mscoree.dll"。.NET ActiveX 在注册时实际上注册的就是这个dll,然后将自身的描述信息也存放在注册表中。

在被调用时,先启动的是mscoree.dll,它会准备好.NET 运行时,读取相应的注册表信息,加载运行.NET ActiveX。

因此本地看到的已安装的.NET ActiveX的版本号,其实是mscoree.dll的版本号,与.NET ActiveX 的版本号无关,也不能正确的和网页上的版本号进行对比。这一缺陷,是技术选型时值得衡量的一个因素。

转载于:https://my.oschina.net/oymyisme/blog/598590

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值