网上有很多介绍了.NET编写ActiveX的文章,可是彷佛没有提到过.NET ActiveX有一个没法经过网页自动升级的缺陷。windows
普通的ActiveX能够经过在网页上声明更新版本号来自动升级,无需客户端进行人工操做。例如:代理
_<OBJECT CLASSID="clsid:F2E88901-1CF4-11d3-8DB7-00C04FB6E8F6" CODEBASE="http://example.microsoft.com/myComponent.cab#Version=1,0,2,0"> _io
可是.NET ActiveX此路不通。缘由以下:程序
.NET ActiveX不可能脱离.NET运行时,所以非.NET程序在调用 .NET ActiveX 时,须要有一个中间代理"c:\windows\system32\mscoree.dll"。.NET ActiveX 在注册时实际上注册的就是这个dll,而后将自身的描述信息也存放在注册表中。技术
在被调用时,先启动的是mscoree.dll,它会准备好.NET 运行时,读取相应的注册表信息,加载运行.NET ActiveX。d3
所以本地看到的已安装的.NET ActiveX的版本号,实际上是mscoree.dll的版本号,与.NET ActiveX 的版本号无关,也不能正确的和网页上的版本号进行对比。这一缺陷,是技术选型时值得衡量的一个因素。客户端