ActiveX




































ActiveX

ActiveX logo.png
原作者
Microsoft
開發者
Microsoft
初始版本
1996年,​21年前​(1996
網站
microsoft.com/com/tech/activex.asp

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




目录






  • 1 簡介


  • 2 運作原理


  • 3 安全性


  • 4 淘汰


  • 5 參考資料


  • 6 相關





簡介


一些浏览器,例如Internet Explorer、Google Chrome、网景浏览器等等现在或曾经都在不同程度上支援ActiveX控件。这允许网页通过脚本和控件交互产生更加丰富的效果,同时也带来一些安全性的问题。Internet Explorer和一些其他应用程序同时支援ActiveX Documents接口规范,允许在一个应用程序中嵌入另一个支持这个规范的应用程序。很多应用软件,例如微软的Microsoft Office系列和Adobe的Acrobat 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_MACHINESOFTWAREClassesCLSID[2]HKEY_CLASSES_ROOTCLSID之處註冊其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供使用者選用。



參考資料





  1. ^ Introduction to ActiveX Controls


  2. ^ CLSID Key


  3. ^ LoadLibrary function


  4. ^ LoadLibraryEx function


  5. ^ GetProcAddress function


  6. ^ DllGetClassObject entry point


  7. ^ IClassFactory interface


  8. ^ IClassFactory::CreateInstance method


  9. ^ Programming the FileSystemObject


  10. ^ SWbemLocator object


  11. ^ Run Method (Windows Script Host)


  12. ^ How to use Tracking Protection and ActiveX Filtering in Internet Explorer 9


  13. ^ Gregg Keizer. Microsoft nixes ActiveX add-on technology in new Edge browser. Computerworld. 10 May 2015. 




相關







  • ADO

  • NPAPI

  • IUnknown









Popular posts from this blog

Mount Tamalpais

Indian Forest Service

Y