Visual Studio 6 Windows公共控件6.0(sp6)Windows 7,64位

时间:2013-12-22 08:23:49

标签: visual-studio vb6 visual-studio-6 microsoft-common-controls

我被要求帮助为某人创建遗留vb6应用程序,因此我决定在this guide之后在我的Windows 7 x64笔记本电脑上抛出Visual Studio 6。

它安装得很好,从我可以看到一切正常,除了Microsoft Windows Common Controls 6.0(sp6)。 Microsoft Windows Common Controls-2 6.0(sp6),Microsoft Windows Common Controls 5.0(sp2)等都可以正常工作。但是,当我尝试添加Microsoft Windows公共控件6.0(SP6)组件时,我收到错误:

'' could not be loaded

我无法添加图片,因此我已将屏幕截图上传到此处,以便任何想要查看它的人:

http://i.imgur.com/7aym4xB.png

我尝试注册/取消注册/重新注册MXCOMCTL.OCX,MSCOMCT2.OCX,msdatsrc.tlb都没有成功。我还卸载了一个已知的安全更新,该更新可能导致Windows公共控件出现问题。我已经删除了IE11,即使报告状态IE11不会像IE10那样导致MSCOMCTL.OCX问题。

我在Windows XP SP3兼容模式下运行VB6.EXE。使用禁用可视主题,禁用桌面合成,以及在高DPI设置下禁用显示缩放。以及以管理员身份运行它。

我还尝试打开一个使用此控件的上一个项目,并且在加载过程中失败时出现与屏幕截图相同的“空白”错误,生成的错误日志中包含以下内容:

第35行:控件lvData的类MSComctlLib.ListView不是加载的控件类。 第223行:控制Stat的MSComctlLib.StatusBar类不是加载的控件类。

所以这告诉我这不是.vbp中的版本问题,就像一些建议一样(因为它也适用于新的空白项目)。

我在智慧结束。显然人们已经使VB6和Windows 7 x64都能正常工作(使用Windows公共控件)但是我没试过可以缓解我的问题。我希望这里有人可能会遇到这个问题,或者对于发生的事情有一些想法。

13 个答案:

答案 0 :(得分:47)

在这里等待回复想法时,我决定尝试一些东西。我以管理员身份运行regedit,导航到HKEY_CLASSES_ROOT \ TypeLib Key,然后搜索“MSCOMCTL.OCX”...我删除了引用此.ocx文件的每个键。

搜索整个注册表后,删除我找到的内容,我以管理员身份运行命令提示符。然后我导航到C:\ Windows \ SysWOW64并输入以下命令:

regsvr32 MSCOMCTL.OCX
regtlib msdatsrc.tlb

再次注册这两个文件后,一切正常!我在网上搜索HOURS寻找这个解决方案无济于事。事实上我在这里发布一个问题后自己解决了这个问题:(即使Visual Studio 6已经过时,希望这可能仍然有助于其他人!

答案 1 :(得分:11)

在“C:\ Windows \ SysWOW64”中实现两个指令已经对我有用

regsvr32 MSCOMCTL.OCX
regtlib msdatsrc.tlb

值得注意的是DOS框应该处于管理员模式。在此之前,我一直有错误,“控制类的MSComctlLib.TreeView不是加载的控件类”和“控制lvListView的类MSComctlLib.ListView不是加载的控件类”。

我也在64位Windows 7上使用Visual Studio 6,并进行SP6更新。由于同样的问题,我被赶到了这里。就我而言,我不需要通过注册表。

答案 2 :(得分:3)

我已经搜索了这个问题好几个小时,点击了数百个网站,但都没有。

我的最终解决方案:

  1. 运行:CMD
  2. cd c:\ Windows \ SysWOW64(找到位置)
  3. regsvr32 MSCOMCTL.OCX
  4. 这解决了第一个问题。对于第二个:

    1. run:cmd
    2. cd c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319
    3. regtlibv12 msdatsrc.tlb
    4. 进行。

      这可能对每个人都不起作用(考虑系统版本原因等)

答案 3 :(得分:2)

我在加载VB 6项目时遇到了同样的困难。这是一个示例错误消息: “控制prgExecution的类MSComctlLib.ProgressBar不是加载的控件类。”

一些Microsoft Magic解决了这个问题如下:我在破碎的项目中打开了Project Components窗口。我点击了Browse,找到了MsComctl.ocx文件。我点击确定。 VB 6然后被卡住(应用程序没有响应)。过了一段时间,我使用任务管理器结束了VB 6应用程序。

然后,奇怪的是,当我打开我的VB 6项目向我的编程朋友展示这个项目是什么POS时,所有控件都回来了,按预期链接。某种程度上,某些东西已被注册或修复。

答案 4 :(得分:1)

就在今天,我有了(可疑的)乐趣,让VB6代码在Windows / 64 Bit上运行。我确实碰到过这个帖子,但提议的解决方案都没有对我有用。 使用“Project - > References ...”菜单添加引用都没有用。

为了让它运行,我不得不手动修改VB6项目文件(* .vbp)。 对于我遇到加载问题的所有库,我必须使用以下表示法来定义作为参考: Object = {Registry Key}#Version#0; LIBRARY.OCX 例: 对象= {FAEEE763-117E-101B-8933-08002B2F4F5A}#1.1#0; DBLIST32.OCX

我没有注册任何库(使用regsvr32),这些都已经正确注册。我想为什么我的解决方案有效,如果使用“object = {[...]”表示法(而不是“Reference = * \ G {[...]”表示法)VB Studio仅使用注册表项并获得根源于C:\ Windows \ SysWOW64,而另一种方式最终查找C:\ Windows \ System32

顺便说一下,安装了IE11。无论这是否重要,只有比尔G可能知道。我的猜测是无论安装哪个IE,我的解决方案都能正常运行。您可能必须取消注册并注册此线程中提到的缺少的库。

希望能帮助任何面临类似问题的人。

答案 5 :(得分:1)

使用运行命令regedit打开注册表编辑器。

找到HKEY_CLASSES_ROOT \ TypeLib项,然后搜索“ MSCOMCTL.OCX”并删除所有引用此.ocx文件的项。

在管理员模式下打开命令提示符(cmd)。输入以下代码,

在32位计算机中,

cd c:\Windows\System32
regsvr32 MSCOMCTL.OCX
regtlib msdatsrc.tlb
regsvr32 MSCOMCT2.OCX

在64位计算机上,

cd c:\Windows\SysWOW64
regsvr32 MSCOMCTL.OCX
regtlib msdatsrc.tlb
regsvr32 MSCOMCT2.OCX

答案 6 :(得分:0)

简单的解决方案

  1. 创建一个新的空白项目并保存
  2. 使用NOTEPAD打开新项目的.VBP并复制MSCOMCTL行
  3. 使用NOTEPAD打开项目的.VBP文件
  4. 替换MSCOMCTL行并保存
  5. DONE

    祝你好运

答案 7 :(得分:0)

我遇到的问题是VB6 IDE无法在W7 64位上安装VB6加载公共控件(Sp6),特别是comctrl和msmask。我尝试了使用regsrv32(提升)提出的所有解决方案,编辑了注册表,更改了MS和其他人提出的vbp中的版本号等。都失败了。这些解决方案适用于我的其他2个PCS而不是这个。最终我删除了IE11,之后一切正常。 IE10从未在PC上安装过 - 我们直接从IE8升级到IE11,并被迫回溯使用IE8。

我不得不说上面的简单解决方案没有解决VB6 IDE不会加载公共控件的问题(使用Project下的Components菜单选项) - 你会收到一条错误,指出Object未加载。所以这将发生(我自己证明了这一点)在任何试图使用不会加载的公共控件的新项目或旧项目中。

所以我对任何遇到此问题的人的建议是使用regsrv32路由尝试手动注册解决方案,然后编辑vbp以更改版本,如果这些失败卸载IE11(并且defintely IE10)。但这可能仍然不是100%的解决方案,因为如果您现有的项目文件“.vbp”包含对错误的公共控件的引用,您需要手动更正 - 这是加载新项目,在IDE中加载您需要的组件的地方,然后使用记事本编辑新创建的vbp,并将公共控件的版本号复制到现有的vbp文件中。

答案 8 :(得分:0)

=>只是杰伊所说的只是删除那些指向除c:\ windows \ system32以外的其他路径的注册表项。这是错误的罪魁祸首。我在我的vb6 IDE上得到了那些错误并在删除那些异常的注册表项之后出现问题是固定的。就像一个魅力。

答案 9 :(得分:0)

我认为这可能与Microsoft发布MScomCtlLib更新的问题有关,该更新被Microsoft软件修补错误,导致注册表错误。

我相信如果你遵循以下建议:

https://support.microsoft.com/fr-fr/kb/2597986

答案 10 :(得分:0)

我遇到同样的问题,但是在运行regsvr32 MSCOMCTL.OCX

时出现错误以下错误

模块" MSCOMCTL.OCX"已加载,但对DllRegisterServer的调用失败,错误代码为0x8002801c。

当我以管理员身份运行CMD.EXE时,它解决了我的问题。

有些时候VB6.EXE还需要以管理员身份运行以访问某些注册表问题。

祝你好运。

答案 11 :(得分:0)

我在使用VB6运行Windows 7-64时遇到了同样的问题。 我尝试了上面的注销和重新注册解决方案,但没有解决问题。然后,我注意到在我的VB6组件中,我同时引用了Microsoft Windows公共控件-2 6.0(SP6)和Microsoft Windows公共控件-3 6.0(SP5)。我删除了SP5参考,现在一切正常。似乎-2 6.0 SP6取代了-3 6.0(SP5),并且当两者都存在时,存在对同一控件的两个引用。 希望这可以帮助。 史蒂夫

答案 12 :(得分:0)

我的解决方案是将Windows 10盒子上的MSCOMCTL.OCX替换为也安装了MS Access的Windows 7盒子中的一个。由于某些原因,存在相同名称的不同MSCOMCTL.OCX 2.0控件。

我知道这听起来很疯狂,可能对其他人没有帮助,但是我们已经用自述文件保存了此MSCOMCTL.OCX,并且每次都修复了我们的新安装错误。

我们取消注册Windows 10附带的当前MSCOMCTL.OCX,将其删除,然后注册我们保存的旧版本。