【问题标题】:not able to open VB project, getting error "C:\windows\system32\mscomctl.ocx" could not be loaded无法打开 VB 项目,出现错误“C:\windows\system32\mscomctl.ocx”无法加载
【发布时间】:2012-12-19 09:11:36
【问题描述】:

我有一个 VB 项目能够正常工作,但现在当我打开项目时,我收到 mscomctl.ocx 错误。 我已经重新注册了ocx,但仍然无法加载项目。

我该如何解决这个问题?

【问题讨论】:

    标签: windows vb6


    【解决方案1】:

    我在 Windows 7 64 位环境下打开项目时遇到了这个问题,它在 win XP 机器上正常工作。我之前在项目文件中做了一个非常简单的更改,它说

    Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; MSCOMCTL.OCX
    

    我将2.1 更改为2.0,因为我在许多论坛上都看到过这样的情况,而且效果非常好。 VBP 文件中的更新参考是

    Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
    

    【讨论】:

      【解决方案2】:

      在我看来,您的项目已经失去了对 ocx 的引用(虽然它仍在尝试使用某些控件)

      点击ide中“项目”菜单中的“组件”

      在列表中确保选中“microsoft windows common controls 6.0 (sp6)”...如果已经选中,请尝试删除它,关闭(并保存)项目,打开项目,然后再次打开它

      【讨论】:

      • 是的,项目丢失了对 ocx 的引用。我试图添加参考,但是当我检查“microsoft windows common controls 6.0 (sp6)”时,我得到了无法加载控件并且未选中控件的错误。请提供更多建议...
      • 我认为对您来说最快的解决方案是卸载 Visual Basic,然后重新安装它......这样可以节省大量时间,您可能不得不花时间寻找原因或以其他方式解决此问题
      • 是的,我已经重新安装了 vb,但问题仍然存在。我还能做什么??我需要准备应用程序的 exe。请就此提出建议...
      • 你真的是先卸载vb6...然后重新启动..然后重新安装吗?还是您重新安装而不删除旧的? ....您可以尝试的另一件事是创建一个新项目并将旧项目中的所有内容复制到这个新项目中.. 可能只有您的项目文件已损坏,因此创建一个新项目可能会有所帮助跨度>
      • 这适用于我的情况。值得注意的是,当我这样做时,它将名称更改为小写,并将版本从 2.2 更改为 2.0,因为 2.2 MSCOMCTL.OCX 变为 2.0 mscomctl.ocx
      【解决方案3】:

      我遇到了同样的问题。 user1272267 的回答有效(谢谢),但令我困扰的是我不明白为什么,我也不确定我是否最终会为我的同事打破这个项目,因为它工作得很好。

      所以我做了更多的挖掘,发现在注册表中有一个键; reg hkcr\typelib{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}\2.0(注意2.0)

      我将 2.0 更改为 2.1,嘿,一切正常。我还检查了 DLL,结果发现我的副本比我同事的副本旧。我认为这可能是因为当我安装 Service Pack 6 时,我保留了一些原始文件,因为替换文件是针对美式英语的,而我有英国版,但我不是 100% 确定这一点

      【讨论】:

        【解决方案4】:

        当我的 Windows 7 32 位笔记本电脑崩溃并且公司将其替换为 64 位计算机时,我遇到了类似的问题...首先我尝试使用 regsvr32 注册 .ocx - 在 32 位计算机上,它会不时卸载到时候……这在翻新的 64 位机器上根本不起作用……

        我尝试更改 .vbp 文件设置,如之前的一些响应中所述,但没有成功...我将 .vbp 设置回 2.0,后来在另一个问题上我正在搜索注册表并决定搜索 mscomctl.ocx并找到了 3 个键 - 2.0、2.1 和 2.2……因为它不起作用,我决定删除 2.1 和 2.2 键,瞧!控件加载没有问题。显然 .vbp 和注册表必须匹配。

        【讨论】:

          【解决方案5】:

          您也可以在记事本中打开项目文件(.vbp 文件),您会看到如下内容:

          Type=Exe
          Form=frmComFX.frm
          Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\SysWOW64\stdole2.tlb#OLE Automation
          Object={648A5603-2C6E-101B-82B6-000000000014}#1.1#0; MSCOMM32.OCX
          Object={5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0; MSFLXGRD.OCX
          Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
          Form=frmSetup.frm
          Module=modFX; modFX.bas
          IconForm="frmComFX"
          Startup="frmComFX"
          HelpFile=""
          Title="ComFX"
          Command32=""
          Name="comFX"
          

          以 'object-' 开头的行包含注册 ocx 的注册表项...您现在可以打开 regedit(开始 - 执行 - regedit)并搜索此键.. 小心你做什么在 regedit 中,你可能会搞砸你的 Visual Basic 安装,甚至你的整个 Windows :)

          当然,您也可以删除 Visual Basic 并重新安装以恢复注册

          【讨论】:

          • 请指教...我应该如何使用 regedit 搜索密钥??
          • 复制 { 和 } 之间的部分 .. 然后启动 regedit (windows 开始菜单 - 执行 - regedit) ... 然后按 ctrl-F 并粘贴键进行搜索
          【解决方案6】:

          我遇到了同样的错误。这两件事对我有用:

          • 通过右键单击以管理员身份运行来启动 Visual Studio 6

          • 禁用 UAC 提示。

          希望对你有帮助。

          【讨论】:

            【解决方案7】:

            尝试重新注册MSCOMCTL.OCX:

            1. 下载文件:http://www.ocxdump.com/ocxfiles/M/MSCOMCTL.OCX
            2. 将其复制到位置c:\windows\system32\
            3. 打开命令提示符并运行:

              cd c:\windows\system32
              regsvr32 MSCOMCTL.OCX
              

            然后尝试再次运行您的应用程序。

            【讨论】:

            • 我按照你的建议做了同样的事情,但我仍然面临同样的问题。请就此提供更多建议。
            • @jyothis 运行 Regsvr32 时,是成功完成还是抛出错误;您是从具有管理员权限的帐户运行的吗?
            • 当你运行你的应用程序时会发生什么?它会抱怨同样的错误吗?
            • 尝试从 MS 网站下载并安装 VB CC6 并重试microsoft.com/downloads/…
            【解决方案8】:

            Windows 7 64 位;刚刚安装了 VS6 和 VS6 SP6(有困难)但是我的 Win XP 项目给出了“无法加载 MSCOMCTL.OCX”错误。

            我发现 Nathan Hadley 的回答给了我线索,并允许我打开项目.... 我的项目的 userinterface.vbp 文件(从 Win XP 复制)在 MSCOMCTL.OCX 引用旁边有 #2.2,但我的注册表类 ID 只有 2.1。 于是我把userinterface.vbp条目改成了2.1,项目就正常打开了。

            但是第二天我再次运行了 VB6 SP6 累积更新 VB60SP6-KB2708437-x86-ENU(可能第一次没有正确安装),现在我在注册表中有 2.2 版本。 所以我改回了我的 userInterface.vbp 文件,所以 OCX 引用再次具有 #2.2,现在项目仍然可以正确打开并且一切正常。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-04-10
              • 1970-01-01
              • 1970-01-01
              • 2014-02-13
              • 2019-12-31
              • 1970-01-01
              • 2014-06-09
              • 1970-01-01
              相关资源
              最近更新 更多