一次在VS 2005编的一个
程序上无法使用
MSHFLXGD.OCX控件(具体症状是当要使用该控件时出现程序崩溃)。开始以为MSHFLXGD.OCX控件没有注册,使用regsvr32进行注册,但是注册成功后依然无法使用。于是上网搜索资料,大致知道了原因:原来是微软的OCX控件大多需要许可证,有了分发许可证的控件才可以正常运行。 按照网上的说法是:mshflxgd.dep 和mshflxgd.srg 都编译到windows\system32目录下(这两个文件可以在安装过VC的Windows系统下找到),然后还要导入一个注册表项目 [HKEY_CLASSES_ROOT\Licenses\1F3D5522-3F42-11d1-B2FA-00A0C908FB55] @="gcfjdjecpchcncdjpdejijgcrdoijjfcieod" 当时我不知道如何导入一个注册表项目,就采用一个苯办法:安装VC6.0(只要安装了VC 6.0都能使用)。现在我知道了,就是可以用该控件的机子的注册表的HKEY_CLASSES_ROOT\Licenses项导出为一个reg文件,然后将其拷贝到要用控件的机子上进行授权(具体是双击该reg文件将其加入到注册表),这样估计就能用了。我甚至怀疑“将mshflxgd.dep 和mshflxgd.srg 都编译到windows\system32目录下”这一步是否有作用。照我的设想:首先是使用regsvr32进行注册,然后使用reg文件将其加入到注册表。不过我没有试过,有兴趣的朋友可以试一下。 看来使用了OCX控件的程序在别的电脑上不能运行,如果既不是缺ocx文件,也不是因为控件没有注册,那么就有可能是缺少许可证引起的,可以用类似的手法解决。