所有DLL 文件一般都在system32 目录下,把system32 目录下所有DLL 文件都注册一下,可以解决大多数由DLL 文件引起的问题.实现过程,运行下面这个命令:
for %1 in (%WinDir%/SYSTEM32/*.DLL) DO RegSvr32.EXE /s %1
“命令提示符”后输入命令,这个指的是MS-DOS下的命令提示符后输入。并不是指运行中直接运行。
另外,注意空格位置。除括号内的没空格,其他后都带有一个空格。
新建一个文本文件,键入下面的两行命令保存为 [注册修复DLL.bat] 批处理文件。
for %%1 in (%WinDir%/SYSTEM32/*.DLL) DO RegSvr32.EXE /s %%1
for %%1 in (%WinDir%/SYSTEM32/*.OCX) DO RegSvr32.EXE /s %%1
Regsvr32的背景与功能
Regsvr32是一个Windows系统的内嵌程序,不仅存在于Windows 2000 / XP下,同时也能在Windows 98中找到它的身影。它的主要功能就是注册或卸载动态链接库文件(DLL)和嵌入式控件(OCX),您可别小看了它呀,有了它,很多软件或操作系统的难题就都可以迎刃而解了。
DLL文件:DLL文件全称是Dynamic Link Library,中文名字叫做“动态链接库文件”。在Windows系统中,DLL文件就象EXE文件一样能够完成某项功能,但它却无法像EXE文件那样独立运行,必须由其他程序来调用它,而它对于程序的执行也是非常重要的,大多数的程序或系统组件在执行时,都必须链接到DLL文件才能正常运行。换言之,DLL文件就像是数据库中一个个公用的函数库,每位设计人员都可以在自己的程序中随意调用它们,这样,不仅不用自己再去编写一些基础功能(因为这些功能都已经由DLL文件完成了),而且还可以让程序的体积更加小巧。因此,如果某个DLL文件发生丢失,就有可能造成某个软件或某个系统模块发生故障而无法正常工作。
OCX文件:OCX文件的全称是Object Linking and Embedding (OLE) Control Extension,中文名字叫做“嵌入式对象控件”,它的作用其实和刚才谈到的DLL文件特别相像,其实所谓的OLE我们平时已经非常熟悉了,简单地说就像在Word中可以使用Excel数据,写字板中可以嵌入图片文件等等这些功能。打个比方的话,剪贴板就像是个简单的数据共享,而OLE则是一种“对象共享”。
Regsvr32的功能是注册与卸载DLL文件的,DLL文件起到的就是公用函数库的作用,为什么不能直接在程序里调用,还要进行一次注册呢?如果DLL文件没有注册,系统注册表中就没有这个DLL文件的相关信息,虽然它已经存在于我们的硬盘上,但等到调用的时候,系统也就根本找不到这个DLL文件而只能报告没有这个DLL存在了,所以在这个时候就需要我们注册DLL文件了。
【小提示】 Windows系统的DLL因为在安装时已经注册好了,因此不用注册,但是如果因为某种情况系统无法识别这些DLL文件时,还是需要我们手动再注册一遍。
Regsvr32命令格式
Regsvr32命令。
Regsvr32命令格式。以Windows XP为例,在“开始”菜单→“运行”栏中执行“CMD”命令,打开命令提示行窗口,输入Regsvr32命令后回车,就会看到Regsvr32的命令格式“Regsvr32 [ /u ][ /s ][ /n ][ /i [ :cmdline ] ] dll文件名”。
由上可知,Regsvr32命令一共有四个参数,分别是:
/s:注册或卸载成功后不显示操作成功的提示框
/u:卸载已安装的控件或DLL文件
/n:不调用DLLRegisterServer,要注意这个参数应与/i一同使用
/i:调用DLLInstall,并给其传递一个可选的[ cmdline ];当使用/u时用来卸载DLL
实例了解Regsvr32的命令格式。比如我们想注册一个保存在C:/Folder目录中的shmedia.dll动态链接库文件,那么执行的命令就应该是“Regsvr32 c:/folder/shmedia.dll”,而如果注册过后打算卸载时就更简单了,执行命令“Regsvr32 /u c:/folder/shmedia.dll”就行了。
常见错误提示
使用Regsvr32命令错误提示。
错误一:未指定DLL文件的具体路径
这种错误比较常见,一般出现在注册非系统DLL文件时,原因就是Regsvr32程序在默认路径找不到指定的DLL文件,无法正常完成注册。解决的办法也很简单,只要在命令中指定好DLL文件的具体存储路径就行了,比如“Regsvr32 c:/folder/abc.dll”就是一个正常的命令。
错误二:要注册的文件类型错误
这种错误比较少,原因就是用户欲注册的文件根本就不是一个正常的DLL文件或OCX文件,Regsvr32根本无法完成注册。解决的方法就是指定一个正常的DLL文件或OCX文件就行了。比如原命令为“Regsvr32 c:/abc/abc.txt”,而正确的命令就应该是“Regsvr32 c:/abc/abc.dll
错误三:键入的命令中未写明DLL文件名
原因就是根本没有指定DLL文件名,这样Regsvr32自然也就无法得知要对什么进行操作了,所以才会弹出这个提示来。解决的办法就是指定要操作的DLL文件或OCX文件即可。
实例
常见的实例。
大家可能都知道在Windows XP中默认可以显示ZIP文件夹(压缩文件夹),但问题是一般使用第三方解压缩软件WinRAR或WinZip,这样XP默认的那个ZIP文件夹显示功能就成了摆设,白白的浪费了大量的系统资源。
利用Regsvr32命令卸载它。
进入命令提示符窗口,执行命令:Regsvr32 /u zipfldr.dll 即可。当然如果卸载后还想再启用,只要再执行一遍Regsvr32 zipfldr.dll命令就行了。
实例二:卸载Windows图片预览功能
图片预览功能和上面所说的ZIP文件显示功能如出一辙,。
进入命令提示符窗口,执行命令:Regsvr32 /u shimgvw.dll即可。当然再次启用的方法和前面一样,也是Regsvr32 shimgvw.dll。
实例三:修复损坏的IE浏览器
IE链接点击无效,无法正常打开新窗口,基本上重装一遍IE肯定能解决问题,但这种方法既费时间也费精力,直接用Regsvr32命令。
进入命令提示符窗口,执行命令:Regsvr32 actxprxy.dll,待正常报告窗口弹出后,再次执行命令:regsvr32 shdocvw.dll,再等待正常报告弹出后,继续执行命令:Regsvr32 Oleaut32.dll,等最后这次正常报告弹出后,就可以重新打开IE试试了。
实例四:卸载XP的影像预览功能也很简单
同上面所说的图片预览功能一样,XP的影像预览功能(即视频文件预览功能)也可以注册与卸载。
进入命令提示符窗口,执行命令:Regsvr32 /u shmedia.dll即可成功地卸载XP默认的影像预览功能,当然去掉/U参数,即Regsvr32 shmedia.dll命令又可以将影像预览功能重新注册上。
【小提示】 以上几个实例均是将这些系统功能反注册,以使系统无法使用到这些功能,并没有删除掉任何系统文件,因此也可以轻松地重新注册这些功能,整个过程都是可逆的。