关闭

检测COM是否可用,删除COM

标签: COM删除可用
379人阅读 评论(0) 收藏 举报
分类:

需要重新注册某个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 }
复制代码

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

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

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

CoFreeUnusedLibraries();

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

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:915979次
    • 积分:10784
    • 等级:
    • 排名:第1590名
    • 原创:75篇
    • 转载:869篇
    • 译文:2篇
    • 评论:46条
    最新评论