在Windows 10上使用VB6通用控件

5

我最近从Windows 7升级到了Windows 10。现在遇到了一个问题,就是缺少Microsoft Common Controls mscomctl。

enter image description here

我已经使用sysWow64/Regsvr32.exe注册了"MSCOMCTL.OCX"文件。

enter image description here

但是当我重新加载项目时,它仍然找不到引用。
我还将.ocx文件注册到了System32中。这是Windows 10的问题还是我漏掉了什么?

我注意到,Josh,你的错误消息提到了MSCOMM32.OCX,而不是MSCOMCTL.OCX。那是微软通信控件。这可能是你问题的实际来源吗? - BobRodes
似乎很奇怪,将Windows 10降级可能会破坏组件注册,但也许它会追踪killbits,假设只有Trident仍在使用这些OCX。无论如何,您可能需要进行干净的Windows 10(和其他所有内容)安装。我想知道这些是否没有在Win7上正确安装,并且旧用户配置文件的VirtualStore中的注册信息已经丢失了。 - Bob77
2个回答

6
这个错误最有可能的原因是您的项目正在寻找比Visual Basic 6(带有Visual Studio 6 Service Pack 6)安装的MSCOMCTL.OCX更新的版本。您可以通过在文本编辑器中打开.vbp项目文件来验证项目所需的typelib版本。查找像这样的行:Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.2#0; MSCOMCTL.OCX 中间的 2.2 是所需的typelib版本。如果重新添加组件引用并保存项目,则可以返回到.VBP文件并查看当前安装在计算机上的typelib版本(可能是2.0版本)。要获取最新的typelib版本(2.2):
  1. 如果您还没有安装,请安装Visual Studio 6 Service Pack 6
  2. 安装Microsoft Visual Basic 6.0 Service Pack 6 Security Rollup Update2016年1月版

这将为您提供MSCOMCTL.OCX的6.1.98.46版本。


您的链接#2现在指向2021年3月23日的版本;是否可以选择旧版本? - M.M
@M.M 我今天检查了当前的下载情况。尽管下载中心列出了 2021 年 3 月的日期,但 MSI 包含的文件与之前相同,最新日期为 2015-11-05,KB 链接仍显示为 2016 年 1 月的更新。这将可以正常工作。 - Holistic Developer

3
答案是我需要进入项目,点击项目,然后组件并勾选Microsoft Common Controls。点击应用并保存后重新启动项目。没意识到如果没有注册表会禁用它,在完成.ocx文件的注册表后,您需要重新启用它。enter image description here

在我的系统上,Windows 7 版本比 Windows 10 更高!不匹配似乎需要删除并重新添加 MSCOMCTL.OCX 引用。 - RockResolve

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