admin管理员组文章数量:1122850
最近在测试一个加载ocx控件的C++程序,运行前要先注册ocx控件。
1.用运行命令提示符或者PowerShell。
2.利用命令进入到ocx文件所在的目录下输入注册命令
注册命令:regsvr32 XXXX.ocx
反注册命令:regsvr32 /u XXXX.ocx
或者直接输入注册命令,再输入ocx文件的绝对路径,回车,一般就可以注册成功的。
但是这次在测试机上弹出一个错误提示:
模块“XXXX.ocx”已加载,但对 DllRegisterServer 的调用失败,错误代码为 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:/XXXX/XXXX.ocx"
排除不可能存在的问题后,找到了我的错误原因,权限不足,于是用管理员权限打开PowerShell,并运行命令,注册成功。
以此记录下来。
版权声明:本文标题:win10注册ocx控件的步骤(包含错误处理方法0x80040200) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1727369529a1243669.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论