MSCOMCTL.OCX蓝调

问题描述 投票:1回答:1

MSCOMCTL蓝调

对不起,我的帖子很长,但我试图给所有相关信息。

我正在将一个VB6应用程序从Windows server 2008 R2转移到Windows server 2012 R2上运行的vm.这是一个完全手动的过程。

我用文本编辑器打开vbp文件,并将依赖关系保存在文本文件中。

我在2008年服务器的注册表中搜索每一个dlls和ocx,找到它们在文件系统中的位置。然后,把它们全部复制到2012年的服务器上,并在SysWoW64文件夹中使用regsvr32开始注册每个人。

我在使用一些dlls(第三方和我自己的)时遇到了不少问题,但都能解决。

2012年的exe终于能够加载BUT。

我们使用的日期组件(Infragistics PVDateEdit9.ocx)在一个表单上不能显示日历,当按下小箭头时。我记得从过去的安装中,它与MSCOMCTL.OCX有关,可能是PVDateEdit9在调用日历。

我搜索了2012年的注册表,没有找到它的参考。我复制了安装在服务器2008上的那个,并用SysWoW64 regsvr32注册它。这并没有帮助。

在花了一些时间之后,我决定从两个服务器上导出TypeLib键{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}的所有注册表键并进行比较。我发现2008年的注册表只有一个条目,如下图所示,2012年的每个节点下都没有(其实这个ocx有5个节点)。

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}**\2.0**]
"PrimaryInteropAssemblyName"="mscomctl, Version=10.0.4504.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

其余的键与2.2版本是相同的。像

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}**\2.2**\0\win32]
@="C:\\Windows\\SysWOW64\\MSCOMCTL.OCX" 

我相信在2012中加入这些PrimaryInteropAssemblyName键可以解决这个问题。

在我尝试之前,我有这些问题。

第一个问题--有谁知道 "PrimaryInteropAssemblyName "键的作用是什么,以及它在2008中是如何出现的?

第二个问题--有人遇到过类似的问题吗?

第三--通过在2012年添加这些缺失的条目--我会对注册表造成严重的损害吗?

谢谢你

摩西

com vb6 registry windows-server-2008-r2 windows-server-2012-r2
1个回答
0
投票

如果有人在这里遇到类似的问题,非常非常老的PVDate9.ocx不掉日历,这是我找到的解决我的问题的方法。

它需要另一个来自infragistics的ocx来注册--PVCalendar9.OCX。它在任何地方都没有显示它依赖于它。我在Ingragistics的原始CAB中搜索了.dep文件,但它不在那里。一旦我注册了PVCalendar9.ocx,它就工作了。它与MSCOMCTL.OCX没有关系--我可能在互联网上的某个地方看到过它。它不需要它。

我是如何能够找出它

我创建了一个非常简单的exe,只有一个表格和一个PVDate控件。我在工作的电脑上运行了这个exe(服务器2008)。然后我使用procexp(Procedure explore)并查看了它加载的dlls,在那里,PVCalendar9.OCX。

问题解决了。

真的是时候开始将这些老旧的应用程序迁移到新技术了。 :-)

© www.soinside.com 2019 - 2024. All rights reserved.