如何监视 ActiveX 组件加载?

发布于 2024-12-05 08:56:46 字数 1101 浏览 1 评论 0原文

我正在开发一个嵌入 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 这样的东西吗?

编辑:清晰度。

I'm working on a .net WinForms application that embeds the Flash ActiveX component. When the application is compiled on my computer, Flash loads fine. When the application is compiled on our build server, it throws the following exception when run:

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]

I want to see what clsid my application is trying to load. Is there such a thing as ActiveX-Spy?

Edit: Clarity.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

池木 2024-12-12 08:56:46

您可能需要启动 procmon (sysinternals.com) 等工具并捕获错误发生时正在读取的注册表项。过滤 RegOpenKey 操作(操作为 RegOpenKey)并查找不成功的结果(结果不是 SUCCESS)。这有点乏味,但通过比较两台机器之间的注册表跟踪,它应该会为您指明答案。

You might want to fire up a tool like procmon (sysinternals.com) and capture what registry entries are being read at the time that the error occurs. Filter on RegOpenKey operations (Operation is RegOpenKey) and look for unsuccessful results (Result is not SUCCESS). It's a bit tedious but by comparing reg traces between the 2 machines it should point you to the answer.

枯寂 2024-12-12 08:56:46

我用来监视旧版 C++ dll 的工具是 ProcMon。您可以监视所有 dll 活动(注册表、文件系统、网络等)

What I have used for spying on legacy c++ dlls is ProcMon. You can Spy on all the dlls activity (registry,filesystem, network, etc.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文