注册控件失败之一:提示0x80040200错误的处理办法

今天有客户反馈说控件无法注册,晕,这问题好容易困扰开发者以及客服人员,但是环境千差万别,很难做到完全自动化。

出现的错误号码有很多,但相对的0x80040200这个号码出现的概率较其它的会高一些。

通过近一段时间以来的问题处理,大致上有如下几种情况:


1. 缺少文件。为了尽量减少这种情况的发生,在编译时,两个地方需要修改:

A. C/C++ -->  代码生成 --> 运行库,由于发布的通常是release版本,所以debug版本的可以不管,对release版本,修改为“多线程”,而不要选择“多线程 DLL”

B. 如果有使用MFC,则在 常规 --> MFC的使用荐中,选择“在静态库中使用MFC”,而不要选择“在共享DLL中使用MFC”,如果是不使用MFC,则选择“使用标准windows库”

此种情况发生的概率最大,通常来说,通过以上两个选择的修改,对windows库的依赖上基本可以做到最小,如果还发生这种情况,则通常是缺少第三方库导致的


2. 被安全软件拦截

如果注册失败,可以关闭安全软件,比如360、瑞星等杀毒或者其它权限管理工具试试


3. 系统权限问题

该问题在旧的系统上出现概率较低,因为旧的系统对权限的限制较小,而目前的多数系统,特别是从vista开始,比如win7、win8、win10等等对权限的限制非常严格,对于大多数用户来说都没有注册控件这种权限,包括普通的管理员。所以为了得到这个权限,必需使用Administrator登录系统来注册,否则,必需在cmd.exe上点鼠标右键选择“以管事员身份运行”来启动cmd窗口,然后在其中输入注册命令才可成功


4. 系统的位宽问题

早前系统只有32位的不会存在此问题,目前的win7、win8、win10都有32位和64位的区别,所以控件也区分是32位和64位。目前来说,我们的程序可能多数都是32位的,除非指定了64位编译。

如果操作系统是64位,而控件是32位的,则可能需要指定正确的注册命令,通常来说需要使用 c:/windows/sysWOW64目录中regsvr32.exe来注册控件,即 c:/windows/sysWOW64/regsvr32 "d:/xxx/myocx.ocx"


需要说明的是,以上的编译设定部分,是以vs2010为主要参考的,除了vc6之外,从vs2008开始的新版本,应该都差不多


希望本贴对大家有所帮助




猜你喜欢

转载自blog.csdn.net/jszj/article/details/53378684