程序中使用DirectShow技术报“COM组件创建实例失败”

时间:2024-05-20 12:54:53

问题:

最近开发的功能中,使用DirectShow技术代替旧VFW,调取高拍仪或摄像头为了兼容大部分品牌设备。

可以同事在给客户机器安装产品后,运行时系统提示“IClassFactory为CLSID为{51B4ABF3-748F-4E3B-A276-C828330E926A}的COM组件创建实例失败,原因是出现以下错误:80040273”

程序中使用DirectShow技术报“COM组件创建实例失败”

 

分析:

根据提示的CLSID到我的注册表找到了如下信息:

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{51B4ABF3-748F-4E3B-A276-C828330E926A}]
@="Video Mixing Renderer 9"
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{51B4ABF3-748F-4E3B-A276-C828330E926A}\InprocServer32]
@="C:\\Windows\\SysWOW64\\quartz.dll"

"ThreadingModel"="Both"

看来是使用了系统盘符下的quartz.dll文件。

解决方法:

1.让同事在系统盘符下找一下这个quartz.dll文件,他说确实存在,可就是报错。

2.我又给他发了一个dll文件进行替换,还是有问题。

3.最后发现是他系统注册表没有[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{51B4ABF3-748F-4E3B-A276-C828330E926A}\InprocServer32]

4.重新注册控件,怎么也写入不了(即使使用了管理员权限)

5.没有办法只能重装系统了。

[问题持续]

2018年8月15日,该问题再次被另一个客户反馈。根据经验让其重新装一下系统,换一个版本,结果问题还依然存在。最后客户装系统都烦躁了。直接将问题反馈到了工程部,要求派人来给上门维修。

工程部的兄弟经过多方尝试最后得出结论:

客户主板上带的显卡有问题,安装多次显卡驱动都装不上。后来,安装了一个独立显卡,问题得以解决。