在Windows 7下运行VB6的activex dll

发布于 2024-10-04 05:43:21 字数 396 浏览 3 评论 0原文

我正在向用 VB6 编写的旧管理工具添加一些功能。该工具使用 c++ activeX 对象。自从升级到 Windows 7 以来,我就没有使用过该工具,现在活动 X 对象无法加载,并出现 429“ActiveX 组件无法创建对象”错误。我对VB6不了解,但我已经注册了activex dll和类型库,我可以通过项目->引用窗口从项目中删除和添加对象(当按预期删除引用时,程序无法编译) 。 VB6 ide 在管理员模式下运行,如果我直接以管理员身份运行 exe,我会得到相同的错误。

有其他人遇到过类似的问题并找到解决方法吗?

谢谢, Patrick

PS:我还尝试将有问题的 dll 放入 exe 的工作目录中

编辑:我没有运气尝试解决此问题,最终远程处理到 Windows 2003 服务器来测试更改。

I'm adding some functionality to an old admin tool written in VB6. The tool uses a c++ activeX object. I haven't worked on the tool since I upgraded to windows 7 and now the active X object fails to load with the 429 "ActiveX component can't create object" error. I'm not knowledgeable about VB6 but I have registered the activex dll and type library and I can remove and add the object from the project via the project->references window (the program fails to compile when the reference is removed as expected). The VB6 ide is running in administrator mode and I get the same error if I run the exe directly as an administrator.

Has anyone else experienced a similar problem and found a way to sort it out?

Thanks,
Patrick

PS : I have also tried putting the dll in question in the working directory of the exe

EDIT: I've had no luck trying to sort this out and ended up remoting into a windows 2003 server to test the changes.

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

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

发布评论

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

评论(5

雅心素梦 2024-10-11 05:43:21

您可以尝试使用 Mark Russinovich 的 regMon 和 FileMon 来准确查看在加载该 dll 期间请求的文件或注册表项。这通常可以告诉您是否缺少依赖项。

另外,VS6 附带的 DEPENDS.EXE 有时也很有用(尽管它不一定获得 dll 或 exe 的所有依赖项)。

You might try using Mark Russinovich's regMon and FileMon to see exactly what files or regkeys are being requested during the load of that dll. That can often tell you if you've got a missing dependency.

Also the DEPENDS.EXE that comes with VS6 is sometimes good for that (though it doesn't necessarily get ALL the dependencies of a dll or exe).

霊感 2024-10-11 05:43:21

COM 将使用注册表将类名映射到必须加载的物理 DLL 文件。

检查与您的 COM 对象相关的注册表项...首先在 HKEY_CLASSES_ROOT 下,然后是类名(可获取 CLSID),然后是 HKEY_CLASSES_ROOT/CLSID 部分以获取对象的 GUID,然后查看物理库所在的位置。

COM is going to use the registry to map from the class name to the physical DLL file that has to be loaded.

Check the registry keys pertaining to your COM object... first under HKEY_CLASSES_ROOT, then the class name, which gets you the CLSID, then the HKEY_CLASSES_ROOT/CLSID section for the GUID of the object, and then see where the physical library lives.

北陌 2024-10-11 05:43:21

429 可能意味着各种不同的事物。很多时候,这意味着缺少依赖项,找出缺少什么依赖项的最简单方法是使用 procmon 来查看应用程序试图访问哪些文件/注册表设置,并希望能够捕获 ACCESS_DENIED 或 FILE_NOT_FOUND 或你有什么。

A 429 could mean all sorts of different things. Many times, it means that there's a dependency missing, and the easiest way to figure out what dependency is missing is to use procmon to see what files/registry settings the app is trying to access and hopefully, catch where you get ACCESS_DENIED or FILE_NOT_FOUND or what have you.

飞烟轻若梦 2024-10-11 05:43:21

您的浏览器也可能有问题。几周前,我升级了 IE,从那时起,我必须通过打开 IE、单击工具、单击自定义、滚动到 ActiveX 控件并启用和/或单击提示来进行更改。脚本编写和我使用 XMLHttprequest 也需要同样的东西。现在一切都恢复正常,但是 ActiveX 警告警报有时需要 2 分钟以上才能弹出,然后单击后一切正常。

The problem might also be with your browser. A couple weeks ago I upgraded my IE, since then I've had to make changes by opening IE, click tools, click custom, scroll to the activeX controls and enable, and/or click prompt. The same was needed for scripting and for me to use XMLHttprequest. Now everything is back to working, however the ActiveX warning alert sometimes takes over 2 minutes to pop-up, then when clicked everything works fine.

月牙弯弯 2024-10-11 05:43:21

您在那台机器上启用了 UAC 吗?您是否尝试过禁用它?我见过一些情况,它允许注册 ActiveX 控件,但不允许使用它们的应用程序运行。

Do you have UAC enabled on that machine? Have you tried disabling it? I have seen some cases where it let ActiveX controls being registered but didn't let applications using them ran.

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