如何解决VB出现控件对象库未注册的问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决VB出现控件对象库未注册的问题?相关的知识,希望对你有一定的参考价值。

今天打开VB中的一个.vbp工程文件,突然发现提示“对象库未注册”,然后打开菜单中工程-部件中的控件一栏,选择Microsoft Rich Textbox Control6.0 控件,确定之后,提示“对象库未注册”。然后发现richtx32.ocx,定位于D:\木马清道夫\richtx32.ocx,而此时我的c:\windows\system32\richtx32.ocx,这个文件是不存在的,我想可能是我安装了木马清道夫影响了它,我在网上下载了richtx32.ocx,然后复制到c:\windows\system32\下面,在运行中输入regsvr32 "c:\windows\system32\richtx32.ocx",进行.ocx文件注册,也提示c:\windows\system32\richtx32.ocx中的DllRegisterServer成功,但是打开那个.vbp文件时还是出现这个问题,急中!!!!!!!!

会不会是其它控件,或者安装企业版几百M的那种,里面有Rich Textbox 不要注册侧,先卸载原来的,并将程序目录删除。重启后装新的。 参考技术A 确定在工程中加载部件是“c:\windows\system32\richtx32.ocx”位置的。 参考技术B

在部件中选择的时候可以看到系统是定位到了哪个文件。

参考技术C 因为你下载的
控件,虽然
名称
一样,但版本不并不是一样,(至少GUID值不一样),所以VB会认为系统中已经注册的控件和你工程建立时引用的不一样。因此说找不到你引用的那一个。
参考技术D 原因:控件是COM
库的一种形式,COM库最基本的管理是GUID

因为你下载的
控件,虽然名称一样,但版本不并不是一样,(至少GUID值不一样),所以VB会认为系统中已经注册的控件和你工程建立时引用的不一样。因此说找不到你引用的那一个。
解决方法:开始-->运行
输入
regsvr32
C:\widnows\system32\richtx32.ocx
回车会弹出提示你完成注册。开VB工程
仍会说找不到,没关系。
你把窗体上消失掉的控件(变成PictureBox了),删掉,再重新到组件里边选上控件,拖放到窗体上面,就OK了。
记得要把控件名称改成
之前的。
第5个回答  2009-04-16 重新装一下vb

添加 Microsoft 富文本框控件 6.0 (SP6) 时出现“未注册对象库”

【中文标题】添加 Microsoft 富文本框控件 6.0 (SP6) 时出现“未注册对象库”【英文标题】:"Object library not registered" when adding Microsoft Rich Textbox Control 6.0 (SP6) 【发布时间】:2013-04-07 17:59:50 【问题描述】:

我尝试在 VB6 IDE 中通过 Project -> Components... 添加Microsoft Rich Textbox Control 6.0 (SP6) 控件。该控件出现在控件列表中。当我勾选它并单击 OK/Apply 时,我收到 Object library not registered 错误:

环境是带有最新更新的 Windows 7 SP1 x64,VB6 SP6 + KB957924。 richtx32.Ocx 存在于 C:\Windows\SysWOW64\ 中。

我尝试通过在提升的命令提示符下运行它来重新注册 .ocx:

cd c:\windows\SysWOW64
regsvr32 /u richtx32.Ocx
regsvr32 richtx32.Ocx

注册成功完成,但没有解决问题。

当我查看 API Monitor 的幕后情况时,最近的可疑调用是返回 TYPE_E_LIBNOTREGISTEREDLoadRegTypeLib (7c0ffab0-cd84-11d0-949a-00a0c91110ed, 0x0001, 0x0000, LOCALE_NEUTRAL, 0x0018e82c)

【问题讨论】:

有一个相关的问题,我来自哪里,更适合我的问题。它似乎有相同的解决方案。 ***.com/q/15614730/828499 此方案同样适用于[添加Windows通用控件6.0时未注册对象库][1][1]:***.com/questions/15614730/… 【参考方案1】:

问题已通过在提升的命令提示符下运行以下命令得到解决:

cd C:\Windows\SysWOW64\
regtlib msdatsrc.tlb

这也有助于处理其他较旧的 .ocx 文件,例如 Graph32.ocx 和 Threed32.ocx

【讨论】:

谢谢!这实际上解决了我对 MSCOMCTL.OCX 的问题。对它的作用或工作原理有更深入的了解吗? @Semmel 这归结为非常基本的 COM 知识。问题的根本原因是特定接口未在系统中注册。如此明显的解决方案是注册类型库并描述丢失的接口。这就是regtlib 所做的。如果您仍然感到困惑,请尝试此链接:msdn.microsoft.com/en-us/library/windows/desktop/aa366757.aspx 我在 32 位 Windows 7 机器上遇到了同样的问题。修复方法是一样的,只是 regtlib 驻留在 C:\Winodws\System32 中。 如果C:\Windows\System32中没有regtlib.exeC:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe也可以。 在我的 windows 7 64 位机器上,我在 syswow64 中没有regtlib,但在 c:\windows\system32 中运行它可以解决问题。

以上是关于如何解决VB出现控件对象库未注册的问题?的主要内容,如果未能解决你的问题,请参考以下文章

vb 8002801d自动化错误对象库未注册

VB关于MSCOMCTL.OCX对象库未注册的情况

用VB运行工程时,双击打开窗体文件,VB就自动关闭了,毫无提示,在此之前还出现对象库未注册,高手,咋办

vb6.0 mscomctl.ocx对象库未注册

VB6.0弹出Microsofe Windows Common Controls 6.0(SP6)对象库未注册?

access新建一个表时就弹出 对象库未注册 请问怎样解决