当前位置: 首页 > 知识库问答 >
问题:

类未注册错误

程振濂
2023-03-14

在64位计算机上运行Visual Studio 2012应用程序时,会显示以下错误消息:

由于以下错误,检索CLSID为{F2D4F4E5-EEA1-46FF-A83B-A270C92DAE4B}的组件的COM类工厂失败:80040154类未注册(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))

我正在visualstudio中使用Inventor packandgo dll库。

有人知道错误是什么吗?

共有3个答案

梁丘凯定
2023-03-14

在您使用的代码中,有一个对Win32 API CoCreateInstance的调用,用于动态加载DLL并从中实例化对象。

组件ID和能够实例化该对象的DLL之间的映射通常在注册表中的HEKY_CLASSES_ROOT\CLSID中找到。要进一步讨论这个问题,需要解释很多关于视窗中的组件的信息。但是错误表明组件指南不存在于注册表中。

我不太了解PackAndGo DLL是什么(欧特克组件),但我怀疑您只需要通过指定的安装程序安装该组件或它附带的软件包,以便在您的计算机上运行您的代码(即运行此产品的setup.exe)。

换句话说,我认为你需要在这台计算机上安装“打包”,而不是仅仅将DLL复制到目标机器上。

此外,请确保您决定根据您安装的Pack And Go的构建风格(32位或64位),将代码构建为32位与64位。

东典
2023-03-14

问题是DLL是在windows注册表的32位版本上注册的,而应用程序使用的是64位版本。

解决方案:进入“项目属性”的“编译”选项卡,然后单击“高级编译选项…”。将“目标CPU”更改为x86,单击“确定”,保存并重试。

资料来源:http://www.theogray.com/blog/2009/10/comexception-regdbeclassnotreg-on-64-bit-windows

已经为我使用了一个从。Net 4 Winforms应用程序

宁弘亮
2023-03-14

我的问题和解决方案

>

我在中创建了一个wcf服务。net 4.5框架,调用32位第三方dll进行处理。现在,我将build属性设置为目标“any”cpu,并将其部署到64位机器上。

当我试图调用wcf服务时,出现错误“80040154类未注册(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG)”

现在ii使用ProcMon.exe跟踪com注册表问题,并确定该过程正在查找HKLM\CLSID和HKCR\CLSID的注册表条目,其中没有条目。

了解到Microsoft不会将32位com组件注册到64位计算机中的路径HKLM\CLSID、HKCR\CLSID,而是将条目放置在HKLM\Wow6432Node\CLSID和HKCR\Wow6432Node\CLSID路径中。

现在冲突是64位进程试图在64位机器中调用32位进程,该进程将在HKLM\CLSID,HKCR\CLSID中查找注册表项。解决方案是我们必须强制64位进程查看HKLM\Wow6432Node\CLSID和HKCR\Wow6432Node\CLSID的注册表项。

这可以通过将wcf服务项目属性配置为目标为“X86”机器而不是“任何”来实现。

将“X86”版本部署到2008 R2服务器后,出现问题“System.BadImageFormatException:无法加载文件或程序集”

这个badimageformat异常的解决方案是在IIS Apppool属性中为正确的apppool设置Enable32bitApplication为True。

 类似资料:
  • 我使用的是Android GCM推送服务,它在一段时间内运行良好,但如果我让我的应用程序闲置几分钟,或者当我在代码修改后重新运行它时,我没有收到任何消息,GCM服务器给我这个错误:“NotRegistered”我做了一些重新搜索,我发现了这个问题,但我还不能在那里发表评论(低声誉:(而且帖子太旧了) 在浏览过程中,我发现Google服务器有时会自动刷新注册id,所以我需要知道的是GCM服务器何时对

  • 我的公司正在开发一个利用博世视频SDK的应用程序。我已经在我的安装项目中包含了所需的DLL文件,我相信它们在我的项目安装时正在注册,但我在运行时遇到了“未注册类”错误。。 我怀疑我的问题来自这样一个事实,即这个应用程序是在x64中编译的,并且使用BOSCH视频软件开发工具包中的64位DLL。这是有意的,我们绝对希望它以64位模式安装和运行。 确切的错误消息是“由于以下错误,为CLSID为{D12F

  • 我已经成功使用Debenu PDFLibrary一段时间了。我决定将库更新到最新版本(DebenupdLibrary64Lite113.dll)。就在那时,一切都偏离了正轨。 我遵循安装说明,包括注册DLL。注册过程没有产生错误。注册表包含下面所示的CLSID。 我的环境是64位视窗8.1专业版。NET 4.5.1框架。所有更新都已安装。开发环境是Visual Basic。使用VS 2013社区版

  • 我有一个UWP应用程序,我想与另一个程序(有线广播)接口。Wirecast建议的方法是调用以下代码: 当我从UWP应用程序调用此代码时,我得到以下错误: 系统运行时。互操作服务。COMException:“使用CoCreateInstanceFromApp创建CLSID为{A416C15B-A073-4994-8DB5-87527A41B2FA}的COM组件实例失败,原因是以下错误:8004015

  • PHP-X扩展中可以调用Extension::registerClass方法来注册PHP内置类。可以使用PHPX_ME宏实现参数简化,使用方法: Class c = new Class("CppClass"); /** * 注册构造方法 */ c->addMethod("__construct", CppClass_construct, CONSTRUCT); /** * 普通方法 */ c->a

  • 问题内容: 我是Angular JS的新手,正在使用1.6版本。 我有这个脚本: 这是我的数据: 现在这是我的html页面,我在其中指定了ng-app和ng-controller: 我仍然遇到以下错误,这对我来说是新的: angular.js:14239错误:[$ controller:ctrlreg]未注册名称为’productController’的控制器。 http://errors.ang