串口注册遇到的 TYPE_E_CANTLOADLIBRARY:80029c4a 报错

问题描述:今天测试公司软件,需要软件运行需要依赖一个注册工具(公司内部自己做的),按照工具维护人员提供的操作方式方法进行操作,也确实在注册表内看到了相关注册信息(证明注册成功)。
然后兴高采烈的打开目标软件,尴尬的事情发生了,目标软件启动的同时将注册工具的进程给结束掉了!!!
之后怀疑是否与注册路径中有中文有关,修改目标软件及工具软件路径,进行了了反注册,重新注册的操作流程,查看注册表,路径修改的OK,重新启动目标软件,尴尬的是目标软件启动的同时又将注册工具的进程给结束掉了!!
又怀疑是否是串口本身有问题,被占用?NO,另外一个依赖串口的工具,却可以正常使用串口进行相关工作。而且通过目标软件启动后,串口工具确实已经被调起来了,但是紧接着就被结束掉了,说明工具本身确实注册成功了。
MMP,之后尝试了电脑重启、修改更改UAC设置(等级设置到最低)、检查是否存在异常进程等,均未解决问题。


一支穿云箭,千军万马来相见。
自己搞不定,只能叫人。立马找到了工具维护人员寻求帮助,建议使用DebugView打印串口工具内的日志,立刻发现了一个异常日志:

[5836] 0x0d74 [Error] [CCommStarter::s_workProc:169]>>> CoCreateInstanceEx failed. with hr:80029c4a

CoCreateInstanceEx接口反馈了一个系统错误:80029c4a


解下来就有了排查的方向:80029c4a
这个错误是是什么含义呢? 然后找到了包含这个错误码的头文件:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\WinError.h

//
// MessageId: TYPE_E_CANTLOADLIBRARY
//
// MessageText:
//
// Error loading type library/DLL.
//
#define TYPE_E_CANTLOADLIBRARY           _HRESULT_TYPEDEF_(0x80029C4AL)

串口工具使用的库加载的有问题?why?
问了度娘,找到了一篇百度经验:https://jingyan.baidu.com/article/3065b3b6927f9cbecff8a494.html,其中的方法二引起了我的注意:

    方法2:
    原因:存在多个版本
    方法:在注册表中删除其他版本
         找到注册表:HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046},删除其他版本。

莫非,难道,这个镜像有遗留版本的注册信息,然后 win+r 输入 regedit,打开注册表,按照串口工具的名称开始搜索,直到搜到了一个带路径的信息,该路径不是我注册时的路径,而是指向一个已经不存在的路径。
有点忽然大悟,立马按照自己的注册路径手动改掉这条注册信息,重启目标软件,一切恢复了安静祥和的氛围。
战斗状态解除。


CoCreateInstanceEx介绍:

https://docs.microsoft.com/zh-cn/windows/win32/api/combaseapi/nf-combaseapi-cocreateinstanceex?redirectedfrom=MSDN
https://blog.csdn.net/gaoxiaowei/article/details/5701779
https://baike.baidu.com/item/CoCreateInstance/7400606?fr=aladdin

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值