|
最近在注册一些ActiveX控件或DLL时,遇到了Big2GB.ocx注册失败的问题,在解决这个问题以后,又遭遇了新的问题,经过向网站虚心认真的请教,终于得到了解决方法,记录在这里,以给遇到类似问题的朋友提供捷径!
VB开发环境下开发的程序经常会遇到打包好的工程能够无问题安装,但是安装后却显示“ ****.dll(或.ocx)控件已加载,但对DllRegisterServer的调用失败,错误代码为0x80004005(或其他其他类似错误代码)。这样的问题明白人一看就知道这是dll或ocx控件未正确注册的原因,但是怎样解决这个问题,确是比较棘手。
遇到这个问题的时候大家首先能想到的是手动注册该控件。一般有两种方法(1)调用系统本身自带的regsvr32.exe注册器进行注册,但是注册后发现提示注册错误,未能成功注册。这是什么原因呢?难道是没有管理员权限?可我明明是以管理员身份登录电脑的啊。然后便是发送该程序快捷方式到桌面,右键该快捷方式,单击"以管理员身份运行",重新注册控件,发现还是提示先前同样的错误。(2)在“运行”中键入regsvr32 <path> "控件名"的方法进行注册,但问题依旧。这时就让人们摸不到头脑了。其实这归根到底还是权限问题,以管理员身份登录电脑未必就具有管理员权限。下面介绍两种方式来解决这个问题:
第一种方法:
这种方法相对于第二种方法来讲要简单许多。在开始--附件--找到“命令提示符”然后右键单击,选择“以管理员身份运行”,进入DOS环境。在这种情况下使用regsvr32命令便可以成功注册原来控件了。其实类似的问题在以前的学习中遇到过,当时竟然没想起来,用的是第二种方法。不过还好,问题得以及时解决了。
第二种方法(对注册表影响比较大,请一定先备份整个注册表):
1.下载Microsoft的SubInACL 并安装。Subinacl是微软提供的用于对文件、注册表、服务等对象进行权限管理的工具软件。安装好SubInACL后以管理员身份运行程序将使您真正获取对改程序的管理员使用权限。
2.在C:\Program Files\Windows Resource Kits\Tools文件夹下创建一个名为reset.txt的文件。将下面的内容复制到txt中并保存 :
subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f
subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f
subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f
subinacl /subdirectories %SystemDrive% /grant=administrators=f
subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=system=f
subinacl /subkeyreg HKEY_CURRENT_USER /grant=system=f
subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=system=f
subinacl /subdirectories %SystemDrive% /grant=system=f
3.将reset.txt的后缀改为.cmd格式。
4.开始-运行-cmd,进入DOS环境后 键入cd C:\Program Files\Windows Resource Kits\Tools 后回车。然后键入reset.cmd 后回车。当执行完一些列命令后,再对原控件进行注册就可以了。
注册Big2GB.ocx控件失败的解决方案如下:
1.安装msvbvm50.exe
2.复制Big2GB.ocx到c:\windows\system32(64位系统C:\Windows\SysWOW64\)
3.注册Big2GB.ocx文件
注册方法:按Win+R,打开运行栏,输入【regsvr32 c:\windows\system32\Big2GB.ocx】(64位系统regsvr32 C:\Windows\SysWOW64\Big2GB.ocx) |
|