添加Windows公共控件6.0时出现对象库未注册错误

29

我正在尝试在Windows 7 32位计算机上安装Visual Studio 6。

操作系统是从新硬件开始安装的。

我按照这里提到的指示进行操作(之前我用过这个方法)。

安装过程没有报告错误,但是当我尝试将Microsoft Windows Common Controls 6.0添加到工具箱时,会出现“对象库未注册”的错误。

我尝试手动卸载和重新安装OCX,两者都成功了,但我仍然遇到同样的错误。

我尝试安装SP6,安装过程没有报错(并更新了OCX到一个较新的版本),但我仍然有同样的问题。

编辑:

如下面所述,在进一步调查后,似乎IE10更新破坏了MSCOMCTL.ocx。但是我认为这也与顺序有关,因为我有另一台安装了IE10的Windows 7机器,它可以正常工作。


在安装时,您可以选择全部内容,然后尝试安装。 - DevelopmentIsMyPassion
@AshReva - 我正在选择安装VB6、ActiveX、数据访问和图形功能。 - Matt Wilko
仍然希望你能试一下。如果可以的话,否则如果你按照你给出的链接正确安装了,我就没有任何问题了。我也在Win7上安装了它,没有任何问题。 - DevelopmentIsMyPassion
@DanVerdolino - 我也有相同的问题,5.0 可以,但是6就不行。然而不能使用这个版本不是一个选择。 - Matt Wilko
我有两个嫌疑对象 - KB2687503 和 IE10 更新。但是我有另一台安装了相同更新的机器,它可以正常工作,所以我无法完全弄清楚问题所在。无论如何 - 你所提供的答案对我很有效,我真的很高兴,因为在此之前我尝试了所有其他方法,但都没有任何效果。谢谢! - Semmel
显示剩余4条评论
7个回答

69

在32位机器上:

cd C:\Windows\System32
regsvr32 mscomctl.ocx
regtlib msdatsrc.tlb

或者在64位机器上:

cd C:\Windows\SysWOW64
regsvr32 mscomctl.ocx
regtlib msdatsrc.tlb

这些需要以管理员身份运行。(参考链接)


2
哇,这就是解决方法。我一直在绝望地寻找的问题解决方案。说真的 - 你刚刚救了我的一天。你知道这个修复程序实际上是做什么或者它是如何工作的吗? - Semmel
2
非常感谢。我一直在努力添加“Microsoft Windows Common Controls-2 6.0(SP4)”。现在它可以正常工作了。 - VRK
1
对我也起作用了,但我是从c:\Windows\system32(32位Windows 7,就像原帖作者一样,所以我没有一个SysWOW64文件夹)运行了regtlib。 - njplumridge
对于那些没有 regtlib 的人,请使用以下链接:http://www.vbaccelerator.com/home/VB/Utilities/Type_Library_Registration_Utility/VB6_Register_TypeLib_Utility.asp - Conan
7
regtlibv12.exe 可以替代 regtlib.exe,可在 C:\Windows\Microsoft.NET\Framework\v4.0.30139 文件夹中找到,详情请见此问题 - jontsnz
显示剩余2条评论

1

我可以确认,这个问题不能通过像以前那样取消注册和注册MSCOMCTRL.OCX来解决。我一直在试图找出问题的根源,看起来是IE10或IE10与其他一些更新的组合导致了问题。如果我有更多时间投入到这个问题上,我会更新我的帖子,但与此同时,卸载IE10可以解决这个问题。


也许考虑更新您的答案或将其删除?请参见我上面的答案。 - Ofer Zelig

0

我一直遇到同样的问题。VB6 Win7 64位并且找到了一个非常简单的解决方法,所以我想在这里分享一下,以防对其他人有帮助。

首先,我尝试了以下方法但都没有成功:

  • 在我能想到的每个目录中取消注册和重新注册MSCOMCTL、MSCOMCTL2和条形码ActiveX控件(VB98、系统32、sysWOW64、项目文件夹)。

  • 删除工作文件夹并重新获取所有内容(通过源代码安全)

  • 从没有问题的机器上复制OCX文件并注册它们。

  • 安装服务包6

  • 安装MZ工具-值得一试

  • 安装项目的可分发版本。

  • 手动编辑vbp文件(在使其可写之后)以修改/删除引用并进行一般操作。

  • 卸载VB6并重新安装(我认为这是最后的手段)。该问题正在新项目上出现,而不仅仅是现有项目。

以上都没用,但以下的方法有效

Open VB6
New project
>Project
    >Components
        Tick the following:
            Microsoft flexigrid control 6.0 (sp6)
            Microsoft MAPI controls 6.0
            Microsoft Masked Edit Control 6.0 (sp3)
            Microsoft Tabbed Dialog Control 6.0 (sp6)
        >Apply

之后我仍然无法勾选条形码Active X或Windows公共控件6.0和Windows公共控件2 6.0,但当我点击应用时,消息从未注册变为已经在项目中。

>exit the components dialog and then load project. 

这次它起作用了。 再次尝试组件对话框,现在缺失的三个已经被选中了。现在一切都看起来很好。


0

您只需在命令提示符中执行以下命令:

对于32位机器,

cd C:\Windows\System32
regsvr32 mscomctl.ocx
regtlib msdatsrc.tlb

对于64位机器,

cd C:\Windows\SysWOW64
regsvr32 mscomctl.ocx
regtlib msdatsrc.tlb

太棒了!它也为我解决了一个问题。我现在能够编译传统的VB6应用程序了。谢谢你。 - Preetham Reddy

0

......在我的64位W7机器上,安装了VB6......在DOS中,以管理员身份运行,这个方法解决了我在VB6应用程序中遇到的OCX问题:

cd C:\Windows\SysWOW64
regsvr32 mscomctl.ocx
regtlib msdatsrc.tlb

是的!这个解决方案解决了我在VB6中使用MSCAL.OCX(Microsoft日历控件)时遇到的问题。
谢谢大家!:-)

-2

-3
为了解决Win7 32位VB6的问题,请尝试从Windows Server 2003中复制C:\Windows\system32\文件夹下的mscomctl.ocxmscomcctl.oba文件。

2
从早期版本的Windows复制文件通常会导致系统不稳定,不建议这样做。 - Holistic Developer
谢谢。那么我们从哪里可以获取原始文件呢?因为这些文件对于2008R2仍然无效。由于这是部署到Win7版本,因此它仍然存在问题。我尚未在部署时遇到任何问题。 - user2371871

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接