簡體   English   中英

如何跟蹤進程創建的ActiveX控件?

[英]How can I keep track of ActiveX controls created by a process?

我想跟蹤某些進程創建的ActiveX控件。 為簡化問題,我首先要監控當前流程。 我想這樣做,以便我可以檢查是否有任何ActiveX控件支持IOleWindow ,如果是這樣,給定的HWND是否屬於該ActiveX控件(以便我可以將HWND映射到ActiveX控件)。

有沒有人有這方面的經驗? 我的第一個想法是使用API​​掛鈎監視CoCreateInstance調用,但我讀到這並不適用於所有情況。 谷歌的一些研究顯示, http://www.pocketsoap.com/sf/activation.html談到了安裝定制類工廠 - 這將如何運作?

您可能會發現使用UI自動化和Active Accessibility API可以找到您需要知道的內容:

如果您確定需要這樣做,請注意以下事項。 CoCreateInstance本質上是一個便利函數,它包裝了CoGetClassObjectIClassObject::CreateInstance

如果您打算使用該技術,那么您也必須掛鈎CoGetClassObject ,因為該過程可以直接使用它。

當然沒有法律規定任何庫或DLL都不能提供它自己的便利功能,完全繞過COM注冊表。 注冊表本身是一種方便 - 如果您知道DLL的位置,您可以使用LoadLibraryGetProcAddress來查找DllGetClassObject並檢索類對象而不涉及COM庫,並且實際上根本沒有注冊DLL。

我最終掛鈎CoCreateInstance和CoGetClassObject來跟蹤正在創建的所有COM對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM