繁体   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