代码之家  ›  专栏  ›  技术社区  ›  Patrick

在windows 7下从VB6运行activex dll

  •  5
  • Patrick  · 技术社区  · 14 年前

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

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

    谢谢 帕特里克

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

    编辑:我在尝试解决这一问题时运气不好,结果远程登录到windows 2003服务器来测试更改。

    5 回复  |  直到 14 年前
        1
  •  2
  •   DarinH    14 年前

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

    也取决于。VS6附带的EXE有时很好(尽管它不一定能获得dll或EXE的所有依赖项)。

        2
  •  0
  •   sven    14 年前

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

    检查与COM对象相关的注册表项。。。首先在HKEY\U CLASSES\U ROOT下,然后是类名,它将为您获取CLSID,然后是对象GUID的HKEY\U CLASSES\U ROOT/CLSID部分,然后查看物理库所在的位置。

        3
  •  0
  •   weloytty    14 年前

    429可能意味着各种不同的东西。很多时候,这意味着缺少依赖项,要找出缺少的依赖项,最简单的方法是使用procmon查看应用程序正在尝试访问哪些文件/注册表设置,并希望了解您在哪里被拒绝访问或找不到文件,或者您有什么。

        4
  •  0
  •   John T    12 年前

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

        5
  •  -1
  •   Narcís Calvet    14 年前

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