`
pcajax
  • 浏览: 2107147 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Error 80040154 retreiving COM Class factory

阅读更多

1.ask:

Greetings,

    I have a VB.NET application that references a 3rd party Com component. The file is Interop.WINTSRRLIB.dll. My VB.NET application has a project reference to the COM comonent which lives in the directory:  C:\WaveTracker.

    The application runs fine. When I sent it to my customer, he installed in on his desktop machine. It runs fine. Then he copied all of the application files (which live in C:\WaveTracker) to his laptop. However, on his laptop, he gets the error:

"System.Runtime.InteropServices.COMException (0x80040154). Retrieving the COM class factory for component xxxx failed due to the following error: 80040154"

    The customer swears he has the .NET 2.0 Framework installed properly on his laptop. Any ideas on how I can get over this problem???

Kind Regards,

 

2.ans:

Make sure you look in the registry of a PC on which your app works.  Don't do a search, just look through the keys in HKCR\CLSID for the GUID, they are sorted alphabetically.  The fact that you can't find a DLL that can be registered with regsvr32 is a strange problem.  If might live in another folder, c:\windows\system32 perhaps.  Look at the properties of the WinTSRRapiLib reference in your project. Also, the component may itself use another ActiveX component that requires registration.  Like the VB6 runtime files for example.
Another way to debug this problem is to use the RegMon utility, available for free at www.sysinternals.com.  It shows you how your app uses the registry.  Run it on yours and run it on the customer's and compare the two.

2.2

The COM component needs to be registered on his laptop.  Start + Run, regsvr32 c:\wavetracker\componentname.dll

2.3

I had my customer try this (register thedll with regsrvr32) and he reports to me that the system responds with a message that says that the file was loaded but the entry point could not be found and therefore was not registered. The application still aborts with the same 80040154 error.

I can find no evidence that I had registered the dll on my system (with regsrvr32), nor does my customer remember registering it on his desktop system (where the application works and accesses the dll correctly).

So, I guess I am somewhat flummoxed here...any further advice?

Tx,

2.4

 

Sounds like he was trying to register the wrong DLL.  If it is a COM component, it should allow itself to be registered.  To find out what DLL you really need to be registered, pay attention to the GUID reported in the error message.  It will look something like "{750fdf0e-2a26-11d1-a3ea-080036587f03}".  Start Regedit.exe on your PC and navigate to HKCR\CLSID.  Find the GUID that was reported in the error message.  Open the key and look for the value of 'InProcServer32', it should point to the DLL.

ReplyQuote
Thursday, September 28, 2006 10:22 PMScott Masters 
0Sign In to VoteThe GUID reported in the 80040154 message does not show in in a registry search. When attempting to register the dll, the error message is that the DLLRegistryServer entry point cannot be found.

The customer allowed me to access the problem system remotely...there is only one copy of the dll "interop.wintssrapilib.dll" on his system and it is the correct version. In fact, I transferred all of the application files from my system directly to his sytsem and the error persists.

Also, I have a few small dLLs in the application that I wrote....I have never had to 'register' them to have the application work. Furthermore, when I do attempt to register them (just to shed some light on this problem), I (again) get the error that the DllRegister Server entry point cannot be found.

I think this may be an instance of the dll-hell I have always heard about. Any clue as to what is happening?

Tx

Scott

ReplyQuote
Friday, September 29, 2006 12:55 AMnobugzMVP, Moderator
0Sign In to VoteMake sure you look in the registry of a PC on which your app works.  Don't do a search, just look through the keys in HKCR\CLSID for the GUID, they are sorted alphabetically.  The fact that you can't find a DLL that can be registered with regsvr32 is a strange problem.  If might live in another folder, c:\windows\system32 perhaps.  Look at the properties of the WinTSRRapiLib reference in your project. Also, the component may itself use another ActiveX component that requires registration.  Like the VB6 runtime files for example.

Another way to debug this problem is to use the RegMon utility, available for free at www.sysinternals.com.  It shows you how your app uses the registry.  Run it on yours and run it on the customer's and compare the two.

ReplyQuote
Friday, September 29, 2006 2:51 AMScott Masters 
0Sign In to Votei went to www.sysinternals.com and downloaded a few utilities that led me to the problem...'listdlls' and 'procexp' were very useful. The problem was simply that the 3rd party dll required other dlls that were not on the system. So I installed the required (other) dlls and everything is fine.

Thanks for your help and recommendations.

Scott

ReplyQuote
Wednesday, November 01, 2006 4:44 PMPabloDFT 
0Sign In to VoteHi Scott, could you please tell me which utilities you downloaded from www.sysinternals.com, how can i find them at this page?

I have the save trouble with a web service

Thanks for your help

ReplyQuote
Wednesday, May 21, 2008 9:43 PMtngm 
0Sign In to VoteYou need to register the com class on the web server too. Run .reg and .bat of your DLL on the web server.

ReplyQuote
Monday, September 01, 2008 5:16 AMIntelligenceIndia 
0Sign In to VoteHello Friend,

the file you reffered to register "interop.wintssrapilib.dll" is only the wrapper fro your original file.
You can't register this wrapper file with regsvr32.exe. You need the original component file "wintssrapilib.dll".

So you copy the file "wintssrapilib.dll" to C:\WaveTracker and issue the command "regsvr32 C:\WaveTracker\wintssrapilib.dll".

I hope your problem solved..

Senthil Kumar D,
sd_senthilkumar@hotmail.com

ReplyQuote
Tuesday, September 16, 2008 1:31 PMLightGuy 
0Sign In to Voteit looks like you deinstalled some component and it unregisted your dll. Simply reinstall it or fire regsvr32
ReplyQuote
Friday, November 14, 2008 12:41 AMmsp115 
0Sign In to VoteI'm running a 32-bit custom app on 64-bit windows xp sp2.  It starts fine, but when it tries to connect to another app (also 32-bit) I get the problem referenced here (80040154 retreiving COM Class factory).  So,  I went to the GUID directory for for 32-bit procs in a 64-bit architecture (HKCR\Wow6432Node\CLSID) and found the GUID referenced in the error msg.  Looked at the proc and then regsitered it with regsrv32.  Registration went successfully. 

However, I still get the same error when running the program and trying to connect.  Any addt'l thoughts on this?

Edited bymsp115 Friday, November 14, 2008 12:43 AM
ReplyQuote
Friday, November 14, 2008 1:00 AMnobugzMVP, Moderator
0Sign In to VoteIt sounds like your app is running in 64-bit mode.  That would be automatic if it is a .NET app.  Use Corflags.exe or Build + Platform Target to force it to run in 32-bit mode.
--------------------------------------------------------------------------------
Hans Passant.
ReplyQuote
Monday, November 17, 2008 4:09 PMmsp115 
0Sign In to VoteCorflags worked like a charm.  .NET was indeed trying to force it to run as a 64bit app.  Running corflags with the /32bit+ switch modified the .exe properties and allowed for the app to start and connect without incident.  Thanks so much - appreciate your quick (and accurate) response!

Mike
Edited bymsp115 Monday, November 17, 2008 7:41 PM
ReplyQuote
Tuesday, April 14, 2009 12:01 PMRajivYK 
0Sign In to VotePlease register the dll's and restart IIS to fix the Issue.
ReplyQuote
Saturday, September 26, 2009 11:33 AMmessengr 
0Sign In to Vote80040154

Proposed As Answer bymessengr Saturday, September 26, 2009 11:33 AM
ReplyQuote
Tuesday, December 01, 2009 9:51 AMFortyEightK 
1Sign In to VoteIf you're getting the error within a website I managed to fix this error by going into IIS and going into the Advanced Settings of the Application Pool the website is using.  There is an option to "Enable 32-bit Applications" which will probably be set to False.  Set it to True and restart the website.
ReplyQuote
Tuesday, December 15, 2009 3:50 PMmtthwbrnd 
0Sign In to VoteI know it is not constructive, but I just have to say it. After a couple of frustrating days struggling with this needless, pointless issue. This is a ridiculous way of doing things. I am struggling to do all this stupid stuff with DLL within the .NET/COM framework. It is so complicated it could be a monty python sketch. Can't you guys at Microsoft possibly, ever, make something that just works?

I mean, why the ____ should I need to personally worry about the registry? This is crazy. Can't you see how crazy this is?

Proposed As Answer byasadim 16 hours 2 minutes ago
ReplyQuote
Wednesday, December 23, 2009 6:43 AMjeneesh k. velayudhan 
0Sign In to VoteHi...

If you have enabled the option "Enable 32-bit Applications". Can you execute the applications
which are developed in 64 bit ? I think, that is not possible. So, we willn't get the advantage of
64 bit, am i right ?

Also, how will you enable the "Enable 32-bit Applications" ? I dont find any options in IIS application pool.
I have enabled it through command prompt.

ReplyQuote
Sunday, January 10, 2010 11:35 AMPeter Holmdahl 
0Sign In to VoteI have been building my App for 'Any CPU' and that has worked fine together with the COM object the App denpend upon. Then I installed a 64-bit OS and continues to build against Any CPU and got this error code when trying to use the COM object. It turned out I had to build against x86 to still use the COM object. But that shouldn't be a problem (as long as I can run it on my x64 OS (which I can)).
Just a note...

ReplyQuote
Thursday, February 04, 2010 10:29 PMpacmantab 
0Sign In to VoteIn some cases, certain DLLs (like capicom) cannot be placed within the Inetpub folder.  If you are still having trouble with this error, try placing, and registering, the DLL somewhere on the C:\ drive (i.e., C:\SharedDLLs).  That worked for me.
ReplyQuote
Friday, March 12, 2010 12:47 AMPranay_Msbuild 
0Sign In to VoteI have this same issue. I have an application which was build with 'Any CPU'. This application seemed to be working fine. I moved all my code from my desktop to my laptop and I started getting this error. The only difference between my laptop and desktop is the Operating System. Both are using 32 bit version on OS and all the .net versions are same. the only difference one is using XP and the other Windows 7. I tried finding the CLSID in regedit, but this is not present. Any other ideas as to how can i fix this??
ReplyQuote
Friday, March 12, 2010 4:07 PMpacmantab 
0Sign In to VoteMight depend on the version of VS you are running.  A couple of things to try:

- Re-install the framework and restart IIS
- Try publishing the solution (if its VS2008) and setting up a virtual directory via that.

ReplyQuote
Wednesday, March 24, 2010 10:48 PMasadim 
0Sign In to VoteI know it is not constructive, but I just have to say it. After a couple of frustrating days struggling with this needless, pointless issue. This is a ridiculous way of doing things. I am struggling to do all this stupid stuff with DLL within the .NET/COM framework. It is so complicated it could be a monty python sketch. Can't you guys at Microsoft possibly, ever, make something that just works?

I mean, why the ____ should I need to personally worry about the registry? This is crazy. Can't you see how crazy this is?

I share your anxiety lol

分享到:
评论

相关推荐

    利用opencv+keras+python实现人脸识别系统+源码(毕业设计&课程设计&项目开发)

    data retreiving -+ | +cut_files.py 删除冗余的训练图片素材 | +get_images.py 获取不同人名对应的图片,并将其保存 | +get_names.py 获取当前女优排名的名字 list | +googl_api.py 通过 Google API 获取...

    skeyma:用于 {key, value} 对象和流的 JavaScript 解析器和序列化器

    这是用于存储和retreiving有用对象流。安装 npm install skeyma例子对对象使用 skeyma import skeyma from "skeyma"const template = "${forumId}/${postId}/${commentId}"const { parse , serialize } = skeyma ( ...

    nuwe-simple-eats-ios:一个包含简单成分选择界面的库,供用户使用完整的营养数据快速轻松地跟踪他们的饮食

    特征完整的API集成Nuapi的制作和Retreiving吃活动。 从美国农业部的数据库示例视图控制器和故事为创建用户界面可选成分的营养数据扩展获得营养历史报告和分析简单使用下载框架,包括到您的项目(查看我们为建设静态...

    FaceRecoginition:利用opencv + keras + python实现人脸识别系统

    data retreiving -+ | +cut_files.py <-- 删除冗余的训练图片素材 | +get_images.py <-- 获取不同人名对应的图片,并将其保存 | +get_names.py <-- 获取当前女优排名的名字 list | +googl_api.py &...

    基于Springboot+Vue的墙绘产品展示交易平台毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    99-青海大学大数据中心建设分享.pptx

    99-青海大学大数据中心建设分享.pptx

    TD-LTE载波聚合方案.docx

    5G通信行业、网络优化、通信工程建设资料。

    10份网络优化创新案例.zip

    SA语音回落与切换流程冲突解决.pdf 计费模式错误导致SA语音承载建立失败,pdf BSF网元bug导致SA用户VOLTE业务故障,pdf SA基站SCTP偶联IP配置不规范导致切换失败的问题处理,pdf 第一医院SA+NSA双模基站方案保障5G查房车应用,pdf SA未配置互操作场景下终端语音业务研究案例,pdf SA站点天馈隔离度问题导致上行速率不及预期,pdf SA组网下微信小视频卡顿影响感知案例,pdf 基于八步法定位SA掉线问题.pdf SA站点测试宏微切换异常事件,pdf

    施工监理费计算依据.doc

    5G通信行业、网络优化、通信工程建设资料。

    wordpress插件WhatsApp右下角浮动悬浮客服按钮

    1、WhatsApp插件,可轻松实现wordpress后台设置,前台悬浮显示; 2、无缝集成:该插件将WordPress站点与WhatsApp无缝集成; 3、多人员支持:支持显示多个WhatsApp账户,让用户根据需求或偏好选择联系不同的团队成员 4、群组邀请:允许邀请用户加入特定的WhatsApp支持群组,便于群体咨询、公告发布或集体答疑。 5、响应式设计:插件具备响应式布局,确保在各种屏幕尺寸和设备类型上均能良好呈现并顺畅使用。 6、WooCommerce产品查询集成:针对电商网站,支持与WooCommerce产品查询功能结合,方便用户就具体商品提问。 7、带声音的自动弹窗:可设置带有声音提示的自动弹出窗口,提醒用户支持服务的存在 8、定制欢迎消息:设置个性化欢迎信息,向用户传递品牌关怀或引导其使用支持服务。 9、移动端与桌面端开关控制:可根据需要独立开启或关闭移动端或桌面端上的插件功能 10、GDPR合规:遵循欧盟GDPR数据保护法规,保障用户隐私及数据安全。

    基于YOLOv7的芯片表面缺陷检测系统

    目前随着电子领域的快速发展,芯片也已经成为日常生活中不可或缺的一部分。随着市场对芯片的需求不断增大,裸芯片表面缺陷检测任务的压力也越来越大。裸芯片表面的缺陷检测不仅能保证芯片成品的质量,而且有着统计缺陷数量,反馈给生产前道工序的重要意义,但是目前许多生产线对于裸芯片表面依旧采用人工目检的方法进行缺陷检测,不仅实时性差,耗时长,而且结果会受到检测人员主观因素的影响。  目前国内外的芯片表面缺陷检测设备不仅价格昂贵,而且功能比较单一,因此本文提出了一种基于深度学习的裸芯片表面缺陷检测算法,具有高效率,实时性好的特点,与传统人工目检的方式相比具有一定的优势

    基于SpringBoot的“大学生社团活动平台”的设计与实现.zip

    基于SpringBoot的“大学生社团活动平台”的设计与实现基于SpringBoot的“大学生社团活动平台”的设计与实现基于SpringBoot的“大学生社团活动平台”的设计与实现基于SpringBoot的“大学生社团活动平台”的设计与实现基于SpringBoot的“大学生社团活动平台”的设计与实现基于SpringBoot的“大学生社团活动平台”的设计与实现基于SpringBoot的“大学生社团活动平台”的设计与实现基于SpringBoot的“大学生社团活动平台”的设计与实现基于SpringBoot的“大学生社团活动平台”的设计与实现

    英飞凌官方ADS库1.9.20版

    英飞凌官方ADS库1.9.20版

    汇编语言-assembly-贪吃蛇游戏-汇编语言期末大作业

    汇编语言——贪吃蛇游戏 GREEDY_SNAKE 是基于8086 汇编语言开发的,汇编语言风格是采用《汇编语言》第二版 王爽著; G_Snake.asm 本贪吃蛇游戏 实现了随机出现食物、统计分数、显示小蛇运动方向、响应键盘中断、指定方向自动移动、游戏结束恢复9h键盘中断和正常退出。 文件说明: 1. 安装DOSBOX:运行DOSBox0.74-win32-installer.exe即可安装; 2. 将Greedy_Snake clone到本地任意盘,eg:d:\Greedy_Snake - mount d:\Greedy_Snake 到一个指定虚拟盘符: - `mount k d:\Greedy_Snake` (why is k? because i like this charactor) 3. 运行G_Snake - 在DOSBOX的DOS提示符下键入: - `Z:\>K:`(回车) - `K:\>cd G_Snake`(回车) - 使用masm 5.0工具编译、链接、运行.asm源程序 - MASM.EXE、LINK.EXE、d

    物联网考试题库答案.doc

    5G通信行业、网络优化、通信工程建设资料

    基于Python的在线学习与推荐系统设计带vue前后端分离毕业源码案例设计.zip

    网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。系统化是必要的,设计网上系统不仅会节约人力和管理成本,还会安全保存庞大的数据量,对于信息的维护和检索也不需要花费很多时间,非常的便利。 网上系统是在MySQL中建立数据表保存信息,运用SpringBoot框架和Java语言编写。并按照软件设计开发流程进行设计实现。系统具备友好性且功能完善。 网上系统在让售信息规范化的同时,也能及时通过数据输入的有效性规则检测出错误数据,让数据的录入达到准确性的目的,进而提升数据的可靠性,让系统数据的错误率降至最低。 关键词:vue;MySQL;SpringBoot框架 【引流】 Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    考试资料+7、互联网与物联网.docx

    5G通信行业、网络优化、通信工程建设资料

    参考资料-人工智能对劳动力市场的影响机制研究.pdf

    参考资料-人工智能对劳动力市场的影响机制研究.pdf

    99-数据开放平台技术实现方案.pptx

    99-数据开放平台技术实现方案.pptx

    199-IBM数据治理新主张-数据治理及元数据管理.pptx

    199-IBM数据治理新主张-数据治理及元数据管理.pptx

Global site tag (gtag.js) - Google Analytics