VB开发环境下开发的程序经常会遇到打包好的工程能够无问题安装,但是安装后却显示“ ****.dll(或.ocx控件已加载但对DllRegisterServer的调用失败,错误代码为0x80004005(或其他其他类似错误代码)。这样的问题明白人一看就知道这是dll或ocx控件未正确注册的原因,但是怎样解决这个问题,确是比较棘手。
遇到这个问题的时候大家首先能想到的是手动注册该控件。一般有两种方法(1)调用系统本身自带的regsvr32.exe注册器进行注册,但是注册后发现提示注册错误,未能成功注册。这是什么原因呢?难道是没有管理员权限?可我明明是以管理员身份登录电脑的啊。然后便是发送该程序快捷方式到桌面,右键该快捷方式,单击"以管理员身份运行",重新注册控件,发现还是提示先前同样的错误。(2)在“运行”中键入regsvr32 <path> "控件名"的方法进行注册,但问题依旧。这时就让人们摸不到头脑了。其实这归根到底还是权限问题,以管理员身份登录电脑未必就具有管理员权限。下面介绍两种方式来解决这个问题:
第一种方法:
这种方法相对于第二种方法来讲要简单许多。找到“命令提示符”然后右键单击,选择“以管理员身份运行”,进入DOS环境。在这种情况下使用regsvr32命令便可以成功注册原来控件了。其实类似的问题在以前的学习中遇到过,当时竟然没想起来,用的是第二种方法。不过还好,问题得以及时解决了。
第二种方法:
1.下载Microsoft的SubInACL 并安装。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 后回车。当执行完一些列命令后,再对原控件进行注册就可以了。