基於.NET編寫的ActiveX自動升級的缺陷

網上有很多介紹了.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 的版本號無關,也不能正確的和網頁上的版本號進行對比。這一缺陷,是技術選型時值得衡量的一個因素。客戶端

相關文章
相關標籤/搜索