APP下载

使用简单命令,巧治本本“疑难杂症”

2020-03-16阿多

电脑知识与技术·经验技巧 2020年1期
关键词:批处理调用控件

阿多

对于本本用户来说,有时在使用本本时,会出现一些奇怪的问题,例如程序无法启动、音视频无法播放、频繁弹出错误提示窗口等问题。这让用户感到迷茫,于是使出重装系统的“大招”来让本本恢复正常状态。实际上,上述情况多半跟系统组件异常有关。不管是Windows自身还是第三方软件,都提供了功能各异的控件(例如DLL、OCX等类型),来实现不同的功能。如果因为各种原因,造成某些控件注册信息丢失,就会导致各种奇怪的故障。例如系统弹出“XXX.DLL文件尚未注册,程序无法正常启动”的提示信息,往往让初学者一头雾水。

掌握Regsvr32的使用方法

其实,只要熟练掌握了“Regsvr32.exe”命令,上述問题就会迎刃而解。该命令其实是Windows系统提供的一个实用工具,主要功能是用来注册或者卸载系统控件。Regsvr32以命令行方式运行,其基本语法为“Regsvr32 [/s] [/n] [/i[:cmdline]] dllname”。其中的“/u”参数表示反注册DLL文件,用来卸载安装的控件。“/s”参数表示使用安静方式,在目标DLL文件注册/反注册成功后不显示提示信息。“/i”参数表示调用DllInstall函数并把可选参数[cmdline]传给它。“/n”参数表示不调用DllRegisterServer,该参数必须和“/i”参数一起使用。“dllname”参数表示具体的DLL文件。

未带任何参数,直接在Regsvr32命令后跟随DLL文件,可以执行DLL注册操作。例如,在Windows中如果由于系统故障或者人为原因,使某个程序的控件注册信息丢失,导致无法正常运行该程序。可以在“开始→运行”中输入“Regsvr32 xxx.dll”命令,完成对应控件注册动作,这里的“xxx.dll”为目标DLL文件。当然,如果注册第三方的动态链接库,需要提供其完整路径,例如“Regsvr32 e:\software\xxx.dll”等。

注意,文件的路径信息中不能包含中文。当您想卸载某个控件时,只需使用“/u”参数即可,例如,系统自带FSO对象(File System Object,文件系统对象),其对应的控件为“Scrrun.dll”文件,该DLL文件存在于系统文件夹中。在“开始”→“运行”中输入命令“Regsvr32 /u Scrrun.dll”即可卸载FSO对象,这样能有效抗击脚本病毒。此外,如果您需要批量注册指定路径中的DLL文件,可以将Regsvr32命令和批处理命令中的For循环指令结合起来使用,大大提高注册的效率。

如果系统因为各种原因受损的话,就需要对不同的DLL文件进行注册,来修复各种故障。利用Regsvr 32命令手工逐一恢复比较烦琐。可以在记事本中输入“For %%i in (%systemroot%\system32\*.dll) do regsvr32.exe /s %%i”和“For %%i in (%systemroot%\system32\*.ocx) do regsvr32.exe /s %%i”两行代码,其中的“/s”参数表示不显示操作成功信息框。然后将其另存为一个批处理文件,例如“Regdll.bat”。当运行该批处理文件时,所有的DLL和OCX文件自动注册完成。

处理相关故障的技巧

如果遇到Regsvr32命令无法运行的情况,就说明某些系统文件受到了破坏,因为该命令的运行需要Regsvr32命令的正常运行,还需要“C:\Windows\System32”文件夹下“Kernel32.dll”“User32.dll”和“Ole32.dll”文件的支持。您可以从其他运行正常的主机中将上述文件复制到本机即可。当然,在使用Regsvr32命令时,还可能会遇到各种其他问题。

从原理上说,当使用Regsvr32.exe注册DLL控件时,它会尝试加载该控件并调用DLLSelfRegister函数。如果此尝试成功,Regsvr32.exe会显示一个指示成功的对话框。如果此尝试失败,Regsvr32.exe会返回一条错误消息。当出现“Unrecognized flag:/invalid_flag”提示时,说明在Regsvr32命令行中使用了无效的参数或开关组合。当出现“No DLL name specified”提示时,说明未指定注册的DLL动态链接库文件名。

当出现“Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found”提示时,说明目标文件不是.DLL 或.OCX文件。当出现“Dll name was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.”提示时,说明DLL动态库文件可能未导出,或者内存中可能有损坏的 DLL动态库文件,可以使用进程管理软件进行检测并中止该损坏的DLL的运行。

当出现“Dllname is not self-registerable or a corrupted version is in memory”提示信息时,说明需要调试的Dll动态库文件不能自行注册,需要重新提取该文件的原始版本。如果出现“OleInitialize failed (or OleUninitialize failed”提示,说明Regsvr32必须先初始化COM库,然后才能调用所需的COM库函数并在关闭时撤销对该库的初始化。如果对COM库进行初始化或撤销初始化的尝试失败,就会出现这些错误消息。例如,Ole32.dll文件可能已经损坏,或者其版本有误。

为Regsvr32命令找个“好搭档”

Regsvr32命令虽然很好用,不过对于普通用户来说,使用命令行方式比较复杂。如果可以在视窗界面方式下轻松注册/卸载Windows控件,无疑可以降低使用难度。有了RegMenu这款免费的绿色软件,就可以轻松实现该要求。RegMenu能实现和资源管理器紧集成,当运行RegMenu.exe时弹出注册窗口(图1),可以对DLL、OCX、AX等类型的Windows控件实现关联操作,点击“Install”按钮完成安装操作。在资源管理器,打开合适的文件夹路径,选中需要注册的DLL等类型的文件,在其右键菜单上点击“Register DLL”项,就能实现注册操作,点击“Unregister DLL”项,就能实现控件的卸载操作。

快速修复受损DLL文件

在有些情况下,在使用DLL文件时,我们面临的情况却比较复杂。例如,如果对应的DLL丢失或者误删除的话,就必须将其找回来然后才可以进行注册。在网上有很多专门提供DLL文件的网站,可以帮助我们找到所需的DLL文件,例如打开网址“http://www.zhaodll.com”,在搜索栏中输入DLL文件的名称,来搜索并下载该DLL文件,如果记不清DLL文件的具体名称,可以按照DLL文件的首个字母来搜寻。

此外,如果相应的DLL文件因为各种原因受损的话,就会导致系统出现各种奇怪的故障。例如,无法浏览器无法正常打开页面、播放器无法播放视频等等。因为DLL文件本身出现问题,对其进行注册或者卸载就变得无济于事。使用DLLErrorsFix这款工具,就可以让您轻松快捷的修复受损的DLL文件,恢复系统的活力。在DLLErrorsFix主界面(图2)左侧点击“修复Dll错误”按钮,在窗口右侧点击“开始扫描”按钮,DLLErrorsFix即开始对系统进行全面扫描,来寻找哪些DLL文件出现问题。当扫描完毕,点击“立即修复错误”按钮,就可以解决上述问题了。当然,DLLErrorsFix还提供了恢复功能,在每次修复前自动备份系统状态信息,如果发现修复有误的话,可以点击“救援”按钮,按照具体的时间选择备份项目,点击“修复”按钮,将系统恢复到修复之前的状态。

猜你喜欢

批处理调用控件
使用“填表单”微信小程序 统计信息很方便
基于.net的用户定义验证控件的应用分析
恶意批处理文件导致电脑黑屏、反复重启、无响应的原因分析及应对思路
不装软件批处理为文件夹加锁
借助批处理 让Cortana变聪明
基于Android Broadcast的短信安全监听系统的设计和实现
利用RFC技术实现SAP系统接口通信
批处理天地.文件分类超轻松
利用VF6.0的Timer控件实现动画效果
C++语言中函数参数传递方式剖析