我如何监视ActiveX组件加载?

时间:2011-09-20 21:19:30

标签: c# winforms debugging activex

我正在开发一个嵌入Flash ActiveX组件的.net WinForms应用程序。在我的计算机上编译应用程序时,Flash加载正常。在我们的构建服务器上编译应用程序时,它会在运行时抛出以下异常:

System.Runtime.InteropServices.COMException (0x80040154):     Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
at System.Windows.Forms.AxHost.CreateWithoutLicense(Guid clsid)
at System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)
at System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)
at System.Windows.Forms.AxHost.CreateInstance()
at System.Windows.Forms.AxHost.GetOcxCreate()
at System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
at System.Windows.Forms.AxHost.CreateHandle()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.AxHost.EndInit()
[Internal Stack Trace]

我想查看我的应用程序尝试加载的clsid。是否有像ActiveX-Spy这样的东西?

编辑:清晰度。

2 个答案:

答案 0 :(得分:3)

您可能希望启动procmon(sysinternals.com)之类的工具,并捕获错误发生时正在读取的注册表项。过滤RegOpenKey操作(操作是RegOpenKey)并查找不成功的结果(结果不是SUCCESS)。这有点单调乏味,但通过比较两台机器之间的reg曲线,它应该指向你的答案。

答案 1 :(得分:0)

我用于监视遗留c ++ dll的内容是ProcMon。您可以窥探所有dll活动(注册表,文件系统,网络等)