如何判断一个ocx控件是否已在系统中注册?

解决方案 »

  1.   

    OCX文件是一个动态链接库(其实COM组件就是DLL),regsvr32做的只是加载这个文件,然后调用其中的DllRegisterServer函数,所有的注册操作其实是在组件自身的DllRegisterServer函数中进行的,也就是说,其实并不知道DllRegisterServer到底做了什么操作,如果想判断一个组件是否已经注册
    如果知道这个组件中的某个对象的ClassID或者ProgID。那直接在注册表的
    HKEY_CLASSES_ROOT\CLSID键中查找ClassID或在HKEY_CLASSES_ROOT键中查找ProgID就可以了,如果找到就表明已经注册了。
        还有要注意版本问题,也就是说,如果做了二进制兼容,可能是新旧版本用的是同一个ClassID.在注册表HKEY_CLASSES_ROOT\CLSID键中查找HKEY_CLASSES_ROOT\CLSID\{.....}\InprocServer32默认值是这个组件文件路径的CLSID就是你要找的。
      

  2.   

    非常感谢 cg1120(代码最优化-§帮助那些值得帮助的人§) !!也就是说,非得知道ocx文件中的某个对象的 ClassID 后者 ProgID 才能判断ocx是否注册,对吗?那如何才能知道 ocx 中的ClassID 或  ProgID 呢?