在Windows 7下从VB6运行activex dll

时间:2010-11-22 09:45:45

标签: vb6 windows-7 activex

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

是否有其他人遇到过类似的问题,并找到了解决问题的方法?

谢谢, 帕特里克

PS:我也尝试将dll问题放在exe

的工作目录中 编辑:我没有运气试图解决这个问题,并最终远程进入Windows 2003服务器来测试更改。

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

检查与您的COM对象有关的注册表项...首先在HKEY_CLASSES_ROOT下,然后是类名,它获取CLSID,然后是HKEY_CLASSES_ROOT / CLSID部分,用于对象的GUID,然后查看物理库的位置住。

答案 2 :(得分:0)

429可能意味着各种各样的事情。很多时候,这意味着缺少依赖关系,并且找出缺少依赖关系的最简单方法是使用procmon来查看应用程序尝试访问的文件/注册表设置,并希望捕获到达ACCESS_DENIED或FILE_NOT_FOUND的位置或者你有什么。

答案 3 :(得分:0)

问题也可能出在您的浏览器上。几周前我升级了我的IE,从那时起我不得不通过打开IE,点击工具,点击自定义,滚动到activeX控件并启用,和/或点击提示进行更改。脚本和我使用XMLHttprequest需要相同的内容。现在一切都恢复了工作,但是ActiveX警告提醒有时需要2分钟才能弹出,然后点击时一切正常。

答案 4 :(得分:-1)

您是否在该计算机上启用了UAC?你试过disabling it吗?我见过一些情况,它让ActiveX控件被注册,但没有让使用它们的应用程序运行。