ActiveX

本页使用了标题或全文手工转换,现处于不转换模式
求闻百科,共笔求闻
ActiveX
原作者Microsoft
開發者Microsoft
首次发布1996年,​28年前​(1996
网站microsoft.com/com/tech/activex.asp

ActiveX在广义上是指微软公司的整个COM架构,但是现在通常用来称呼基于标准COM接口来实现对象链接与嵌入(OLE)的ActiveX控件[1]后者是指从VBX发展而来的,面向微软的Internet Explorer技术而设计的以OCX为扩展名的OLE控件。通过定义容器和组件之间的接口规范,如果编写了一个遵循规范的控件,那么可以很方便地在多种容器中使用而不用修改控件的代码。同样,通过实现标准接口调用,一个遵循规范的容器可以很容易地嵌入任何遵循规范的控件。由于OLE在ActiveX控件中的应用的普及,现在OLE技术中只有少数独立于ActiveX技术,例如复合文档

简介

一些浏览器,例如Internet ExplorerGoogle Chrome网景浏览器等等现在或曾经都在不同程度上支援ActiveX控件。这允许网页通过脚本和控件交互产生更加丰富的效果,同时也带来一些安全性的问题。Internet Explorer和一些其他应用程序同时支援ActiveX Documents接口规范,允许在一个应用程序中嵌入另一个支持这个规范的应用程序。很多应用软件,例如微软的Microsoft Office系列和AdobeAcrobat Reader都实现了这个规范。

服务器端ActiveX组件通常是指运行在服务进程中的组件。一个典型应用是在IIS中运行的ASP脚本创建的ActiveX Data Objects,也称ADO。 市场上有很多开发工具支援开发和使用ActiveX控件。

ActiveX Documents泛指一般采用ActiveX技术作为接口所使用的文件,最早始于2000年左右,当時由于网际网路的兴起,当時的软件巨擘微软为打败当時崛起的浏览器Netscape所使出策略,当時市场处于弱勢的IE想要将当時微软市佔率最高的office文件应用于IE上,好打败Netscape,故使出让IE浏览器不需将Office的文件轉換成标准的HTML网頁也能读取甚至修改编輯,因此2000后的IE均提供直接开启ActiveX Documents(如.doc.ppt...等副檔名)之文件,這项策略果然在数年后,将Netscape完全逐出市场。而由于Office的文件只有微软能解读,因此后来的浏览器如Google的Chrome就不能直接打开如PPT或DOC等檔案,不过隨著云端运算的兴起,相信這情況将会改變。

运作原理

使用ActiveX元件
  1. 每一个ActiveX元件都各自用一个唯一的GUID编码在登录资訊的HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\[2]HKEY_CLASSES_ROOT\CLSID\之处注册其DLL檔案路徑。多个ActiveX元件可以放在同一个dll檔案内,但是所有开放使用的ActiveX元件都必须以各自的GUID编号登记在登录资訊裡。
  2. 当该ActiveX元件的dll檔,使用LoadLibrary[3]或LoadLibraryEx[4]的API載入后,以GetProcAddress[5]取得DllGetClassObject[6]這个定义在该dll檔裡的函数的进入点。
  3. 接著呼叫DllGetClassObject,以取得IClassFactory[7]的指标。
  4. 再經由IClassFactory去CreateInstance[8],进行该ActiveX元件初始化的后续操作。

安全性

由于Microsoft在Windows内建许多ActiveX,因此导致一些恶意的网站曾經利用這些ActiveX进行自动安裝病毒后门。 例如:

  • Scripting.FileSystemObject,這个ActiveX可操作新增或修改檔案内容。[9]
  • WbemScripting.SWbemLocator,這个ActiveX可操作WMI,进而存取登录资訊。[10]
  • WScript.Shell,這个ActiveX可從浏览器之中直接执行外部的执行檔。[11]

因此,Microsoft陆续在IE上增加2种封锁ActiveX执行的方法。先是在2007年加上ActiveX相容性旗标(Killbit)功能,經由ActiveX元件开发厂商的向Microsoft回報后,由Windows Update发布KillBit的更新。而后又在IE 9以后的版本加上ActiveX Filtering功能,让IE的浏览者能夠自訂是否封锁特定的ActiveX元件。[12]

淘汰

在2015年7月29日发行的Windows 10,会以不支援ActiveX的Microsoft Edge浏览器[13],取代使用多年的Internet Explorer作为Windows预设浏览器。但为相容性需要,Windows 10仍内建Internet Explorer 11供使用者选用。

参考资料

相关