首页 > 其他 > 详细

COM组件删除失败

时间:2014-03-28 13:33:48      阅读:388      评论:0      收藏:0      [点我收藏+]

今天碰到这种情况:

需要重新注册某个COM组件,但是在注册前希望可以检测当时组件是否可用,

bubuko.com,布布扣
1 CLSID const clsid  = {XXX};
2 LPUNKNOWN pUnknow = NULL;
3 const LRESULT lr = ::CoCreateInstance(clsid,NULL,CLSCTX_ALL,IID_IUnknown,(LPVOID*)&pUnknow);
4 if(lr!=REGDB_E_CLASSNOTREG && NULL!=pUnknow){
5     bRes = TRUE;
6 }
7 if(pUnknow){
8     pUnknow->Release();    
9 }
bubuko.com,布布扣

随后需要删除该组件文件(DLL),然后放置新的组件重新注册。

但是却发现组件无法删除,错误代码是文件被占用。

以前已碰到过类似的问题,需要在测试完组件后强制让系统卸载加载组件。

bubuko.com,布布扣
CoFreeUnusedLibraries();
bubuko.com,布布扣

原因是我们刚才使用就该组件创建实例,实际就是系统把该组件文件(DLL,OCX)加载到当前进程地址空间中,所以操作组件文件的话会提示文件占用。

如果反注册改组件然后再删除是否能成功呢?这个留给有心人吧

COM组件删除失败,布布扣,bubuko.com

COM组件删除失败

原文:http://www.cnblogs.com/aishangxue/p/3629044.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!