开发者社区> 余二五> 正文

认识动态链接库DLL文件(转一篇文章)

简介:
+关注继续查看
DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。
DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。
DLL可在“C:Windows”目录“C:WindowsSystem”目录和程序的安装目录中找到。如果启动程序,但一个或多个DLL文件丢失或毁坏,则会收到出错消息,如“找不到xyz.dll”。如果启动的程序带有一个过期的DLL文件或不匹配的DLL文件,则会出现“未定义的动态链接调用”消息。这时,你可在其他电脑上找到正确的DLL文件并将它拷贝到适当的目录下,程序就能正确运行。
1、如何了解某应用程序使用哪些DLL文件
  右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。
2、如何知道DLL文件被几个程序使用
  运行Regedit,进入HKEY_LOCAL_MACHINESoftwareMicrosrftWindowsCurrent-
VersionSharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。
3、如何解决DLL文件丢失的情况
  有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。

 解决DLL文件错误

DLL实质上是包含了一些函数和数据的可执行模块,由微软公司提供。它可以被应用程序或其它DLL调用。在项目开发或编程中,它是一个前人劳动的经验集合:各个公司个人在项目开发或编程中都会积累下很多的经验、技巧和专业资料,利用动态链接库的技术,将这些成果经验汇集起来,使资源可以得到更广泛的应用;在个人用户的使用中,它又是包含数据及指令的模块,使各个相对独立的数据能被执行、链接调用。
  虽然出现DLL文件错误的原因很多,但平常用家遇到的问题归结起来不外乎系统软件方面和硬件方面的问题。
系统软件方面的解决招式
  轻手:
用最新版本的杀毒软件查杀病毒。有相当部分的病毒会造成系统文件的丢失或损坏,所以首先要升级病毒库彻底查杀病毒。
  中拳:
使用系统自带的修复或还原功堋T赪IN98、ME中,在“开始—运行”对话框中键入“sfc”并回车,启动“系统文件检查器”进行常规检查。若查出有错误,按照提示从系统盘中提取相关文件即可;在WindowsXP中,Windows文件保护功能可以保护一些系统文件,例如.sys、.dll、.ocx、.ttf、.fon和.exe文件。Windows文件保护在后台运行,可保护Windows安装程序安装的所有文件,而这些文件就保存在windowsxp的安装目录下的\system32\dllcache\下面。windows文件保护需要拷贝或还原文件时,把你的xp安装盘放入或者指定你在硬盘上备份的路径即可。如果是在整理完注册表后出现,则需要恢复注册表。
  重刀:
自己动手,丰衣足食。有少部分DLL文件出错是要靠手动解决或升级系统文件解决的。
 
  例1:整理系统后,运行realplayer,报告说找不到所需的DLL文件Pncrt.dll,无法启动。
  解决办法:上网下载新版本realplayer并升级。重新打开realplayer,仍然弹出对话框,说找不到所需的DLL文件Pncrt.dll无法启动。奇怪了,是不是这个DLL文件是系统文件?运行SFC命令,报告无系统文件损坏或丢失,那么肯定这个文件是软件自带的了。于是上网查找资料,说要将注册表中的相关键值删除,重新安装,按此操作进行,也无法解决问题。于是查找Pncrt.dll文件,发现C:\WINDOWS\VCM下有此文件,于是将其复制到realplayer的关联文件夹C:\ProgramFiles\CommonFiles\Real\Common中,运行realplayer,仍报告出错。查看该文件的属性,发现有“版本”这一项,版本的值为6.0.0.0。于是想到可能是该文件存在,但版本的关联不对,导致出错,于是在存在Pncrt.dll的情况下重新安装新版本的realplayer,运行一切正常,问题解决。
 
  例2:WIN98中设置显示属性时出现RUNDLL32故障。
  解决办法:在“开始—运行”中,输入msconfig,然后在System.ini这一页,打开boot文件夹,按“新增”,新增一行叙述:
  drivers=mmsystem.dll
  设定好后,储存你的设定,重新开机即可。
 
  例3:在WIN98第二版中使用IBM语音识别系统4.0版后,再使用IE出现“KERNEL32.dll和OLEAUT32.DLL还有MFC42.DLL发现不明问题,无法使用”。
  解决办法:到c:\windows\system中找到这三个文件并把它们复制下来,复制到IBM语音识别系统的x:\ViaVoice中的bin文件夹;这样我们就可以恢复IE、OE、记事本这些软件所需的DLL文件了。
 
硬件方面的解决招式
  轻脚:
检查是否有超频。不仅是CPU,包括PCI、显卡、内存的频率都应该检查,特别是在BIOS中的设置;在正常频率和电压下使用有利于硬件设备的稳定性。
  中腿:
检查硬件的驱动版本是否相称,以及硬件间是否有冲突,并安装相应的补丁;比如创新SBLive与CoppermineCPU存在兼容性问题,会引起DLL文件出错甚至蓝屏。
  重踢:
将机箱打开,清洁插件并重新拔插配件。这样做的好处是解决一些由于电气性不稳定而引起的古怪的问题。
  必杀技:
1、覆盖安装或还原系统;
2、格式化系统盘重新安装系统。
关于系统文件(dll)丢失、错误的解决方法

◆症状1:
机器正常。使用Win98,一安装就弹出窗口提示:“未处理的异常情况”错误代码:0x80070725,说明:RPC占位程序的版本不兼容。安装程序将立即结束。”杀过毒,注册表清理。怎么解决?
◆说明: 
RPC(远程调用程序),用于通过网络将应用程序函数调用转发到远程系统。最典型的用途就是远程管理。一旦出现系统警告“RPC占位程序不兼容”时,首先可能的就是系统中有关的网络组件程序发生问题。
发生这个问题大多在Win98/NT操作系统上。因为在Win2000/XP操作系统中,都使用了IPV6支持PRC技术,普遍支持目前Windows程序,所以一般在2000后的系统中很少有这个问题出现。
98个人用户频繁出现这问题的常见原因:
1.用户安装新程序里的网络功茉赪in98下不兼容。比如金山毒霸2002/2003,里面有新的网络防火墙功能,而这个功能实现的前提条件是系统必须要有更好的系统网络组件。一旦系统中的有关文件较老,而安装程序却未提供有关更新时,就会出现这个问题。
2.这个情况更多发生网络游戏安装中。为了加快游戏的速度,许多网络游戏设计时大量采用了32位以上的RPC支持功能,而在许多98用户中却并有这样的系统文件,这样就会经常在安装、运行的时候出现该问题。
◆建议: 
1.打补丁([url]http://download.microsoft.com/downl...us/mcrepair.exe[/url])。 
2.网络游戏安装中出现该问题也可将DirectX版本升级到8.0以上。如果升级DirectX8后仍出现这个问题,原因还来自于系统中的网络配置。打开网络邻居,加装有关的IPX、TCP/IP协议,可以解决问题。

◆症状2:
在上网过程中,IE突然关闭,再次打开出现错误显示wsock32.dll 动态链接库错误,必须重启电脑,IE才能正常,请问原因和解决办法。
◆建议: 
如果就是偶尔一次,重启解决问题就可以了。 
如果经常出现wsock32.dll动态链接库错误,就要需要查毒,可能中毒了(如下说明) 
Hybris蠕虫病毒,该病毒通过电子邮件的附件进行传播,一旦收件人打开附件,就会被感染。它在WindowsSystem目录下产生一个wsock32.dll的副本,副本的主文件名是随机产生的8个字母,没有文件扩展名。还会修改Windows目录下的winint.ini文件,使下次Windows开机时原wsock32.dll文件被覆盖。 
如果执行了Hybris病毒,病毒将修改Windows的系统文件wsock32.dll,并且将附有该病毒的电子邮件发送出去。无论使用哪一种电子邮件软件,都可能感染该病毒。

◆症状3:
运行“系统信息”提示找不到mfc42u.dll。经查确认无毒。
◆建议: 
下载该文件:[url]http://www.microsoft.com[/url]

◆症状4:
IE6.0地址栏里ctrl+enter的自动填写功能出现www.*.com.cn,而不是www.*.com.。
◆说明: 
IE6的browselc.dll文件中字符串的BUG。 
browselc.dll位于: 
Win9x:WindowsSystem 
Win2000:WINNTSystem32 
WinXP:WindowsSystem32
◆建议: 
一、下载browselc.dll:[url]http://download.pchome.net/system/patch/9524.html[/url]
二、手动修改:找到browselc.dll文件,复制原文件,然后用eXeScope(或其他能修改exe文件的软件)打开复制的文件(不能直接对原文件进行修改),修改处位于resource>string,把809字符串中的co.cn 修改成com,保存退出。 
替换:修改完的browselc.dll文件需要在DOS下(如果装了双系统可在另一个系统中)替换原文件。(因为这个文件是受到系统保护的,并且当前正被系统使用。替换时请注意备份原文件。)

◆症状5:
IE中无法在新窗口中打开衔接。
◆建议: 
1.开始→运行,输入regsvr32 actxprxy.dll,点击确定,接着会出现一个信息对话框“DllRegisterServer in actxprxy.dll succeeded”,该对话框中点确定;
2.开始→运行,输入regsvr32 shdocvw.dll,点击确定,接着会出现一个信息对话框“DllRegisterServer in shdocvw.dll succeeded”,该对话框中点确定;
3.重新启动电脑。

◆症状6:
一开机自动运行Rundll32.exe程序,进入msconfig把它从启动栏选项去掉,下次开机还是照样自动运行。
◆说明: 
rundll的功能是以命令列的方式呼叫Windows的动态链结库。 
Rundll32.exe与Rundll.exe的区别就在于前者是呼叫32位的链结库,后者是用于16位的链结库。rundll32.exe是专门用来调用dll文件的程序。 
如果用的是Win98,rundll32.exe一般存在于Windows目录下; 
如果用的WinXP,rundll32.exe一般存在于WindowsSystem32目录下。 
若是在其它目录,就可能是一个木马程序,它会伪装成rundll32.exe。
◆建议: 
一般由3721引起,卸载3721可以解决问题。 
(在启动项中表现为“ Rundll32.exe C:WINDOWSDownloaded Program FilesCNSMIN.DLL,Rundll32 ”)

◆症状7:
一使用IE就会跳出对话框“Explorer发生错误(KERNEL32.DLL)”,重新启动后问题依旧。
◆建议: 
用“记事本”创建或者直接修改系统配置文件C:Config.sys,在其中加入如下3行语句:
FILES=65 
BUFFERS=40 
STACKS=64,512
如果错误仍然存在,可使用“记事本”打开系统文件夹(Windows)下的system.ini文件,然后在[386Enh]节上加入如下两行语句: 
Increases default stack pages from 2 to 6 
MinSPs=6 
(MinSPs默认值是2,如需要,每次增加2直到解决问题为止,而第一句前面的“;”主要起注释作用。) 
修改好后保存退出,重启使之生效。

◆症状8:
开机时弹出对话框,提示“缺少动态库链接文件msnp32.dll,network,无法正常运行”,按确定后,进入系统一切正常。在别人的机器上无法找到这个文件,重新覆盖装系统也没有用。
◆说明: 
msnp32.dll是Microsoft网络功能的重要组件,安装了网卡(包括拨号适配器)和Microsoft网络客户端,该文件位于System目录下。系统找不到该文件,可能被误删。
◆建议: 
在网络属性中删除掉所有的协议和适配器,然后重新添加适配器、TCP/IP协议和Microsoft网络客户,Windows将重新复制网络功能需要的文件。

◆症状9:
系统提示:“找不到所需的.DLL文件——MSVBVM60.DLL”
◆说明: 
此文件为VB运行库文件,许多程序的安装和运行都需要该文件。
◆建议: 
1.下载此文件后复制到系统的system文件夹下。([url]http://download.pchome.net/development/vb/807.html[/url],压缩包中包括MSVBVM60.DLL和VB6CHS.DLL)
2.开始→运行,输入regsvr32 C:WindowsSystemMSVBVM60.DLL,确定(此操作目的是注册此动态链接库文件)。
注意:此文件为系统文件,需在“查看”→“文件夹选项”→“文件”选项中选中“显示所有文件”后才能看到此文件。

◆症状10:
笔记本电脑,最近开机显示:启动程序时出错“找不到所需的.DLL文件——DMIAPI32.DLL”,如何解决?
◆说明: 
DMIAPI32.DLL是(DMI)桌面管理界面服务所需的文件,对笔记本尤为重要。基于DMI标准的管理实用程序可很容易实现远程监控和管理,如系统BIOS和常驻软件驱动程序的检查和管理。 DMI标准是实现笔记本易管理性的唯一捷径。
◆建议: 
1.在DMIAPI32.DLL的同一目录下还有一文件名是Win32sl.exe的文件,检查注册表的启动项里有没有设置此文件随系统启动。没有的话,加进去。 
2.同时可能是此dll文件已坏,建议联系笔记本的经销商,可得到此文件的原始拷贝。
修改DLL文件的具体应用
在系统的组策略和注册表中,我们可以修改一些键值来优化我们的系统,并加强操作系统的安全性。可是,对于限制下载、禁止删除文件等功能,我们无法通过上述的操作来完成,这只有通过修改系统DLL文件来实现。
目前,我们通过修改系统的DLL文件,可以实现禁止删除文件、禁止IE下载、禁止IE另存为、禁止文件打开方式等功能。

系统中部分DLL文件的功能
1、Browselc.dll   IE所需要调用的库文件DLL 结构雏形就是它了
2、Shdoclc.dll   系统窗口及设置等,如删除文件、重命名
3、Shell32.dll   系统窗口及设置等,如删除文件、重命名
4、Cryptui.dll   IE控件下载及提示对话框程序

修改DLL文件的方法
1、下载DLL文件修改工具EXESCOPE6.3 - 6.4工具
2、获取Browselc.dll、Shdoclc.dll、Shell32.dll和Cryptui.dll这几个链接文件。在找这几个文件时,最好将其他机器的硬盘,挂接在本机中,然后用本机的操作系统启动并复制这几个文件。
3、在修改DLL文件的时候,打开该键值,在右面的对话框中将所要修改的键值禁用即可,不要删除,以备日后恢复(如图)
 
DLL文件修改秘籍
1、禁止下载的修改方法:
打开 Shdoclc.dll 修改资源--对话框---4416,将4416键值禁用即可。
2、禁止网页添加到收藏夹,打开Shdoclc.dll 修改资源--对话框---21400,将该键值禁用即可。
3、禁止恶意网页加载控件,修改Cryptui.dll文件,要同时修改5个地方才能完全禁止
资源--对话框---130 
资源--对话框---230 
资源--对话框---4101 
资源--对话框---4104 
资源--对话框---4107
将以各对话框中的相应键值,修改成为禁用就可以了。

4、禁止系统删除文件修改Shell32.dll,这个文件需要修改5个地方才可以禁止系统删除文件。
资源--对话框---1011 
资源--对话框---1012 
资源--对话框---1013 
资源--对话框---1021 
资源--对话框---1022
将以上五个地址的键值禁用就可以了!

5、禁止文件被改名,修改shell32.dll,有2个地方需要修改
资源--对话框---1018 
资源--对话框---1019
将以上两处的相应键值,修改为禁用就可以了!

6、禁止运行菜单,修改shell32.dll,将资源--对话框---1018键值设置为禁用。
7、禁止系统文件被挪动修改shell32.dll,需要修改4个地方
资源--对话框---1014 
资源--对话框---1015 
资源--对话框---1016 
资源--对话框---1017

8、禁止目标另存为,修改 Shdoclc.dll 文件,需要修改3个地方
资源--菜单--258---257  
资源--菜单--258---252 
资源--菜单--24641--2268
在这个修改中,我们要把各对应的键值删除。打开该键值后,右键菜单中有删除。在资源--菜单--24641—2268中,有多项该键值,请逐一删除。

9、禁止自定义文件夹选项修改Shell32.dll 文件,需要修改以下4个地方
资源--菜单--215---28719 
资源--菜单--216---28719 
资源--菜单--217---28719 
资源--菜单--216---28719
找到以上四处键值,直接需要删除后即可,而不是禁用。

10、禁止IE文件夹选项,修改 Browselc.dll 文件,需要修改3个键值
资源--菜单--263 (这里有多个请删除)---41251(删除) 
资源--菜单--266( 也有多个请删除)---41329 (删除) 
资源--菜单--268---41251 (删除)
在上面的3个键值中,个别键值有多处,请逐一删除。

11、禁止98 文件共享控件,修改 Msshrui.dll,需要修改2个地方
资源--- 对话框---- 1 --- AutoRadioButton 
资源--- 对话框---- 30 --- AutoRadioButton
将以上两处的键值禁用即可。其他的选项,可以根据自己的需要进行修改。找到相应的功能键值,将不需要的功能,禁用就可以了。

12、禁止文件的打开方式,修改 Url.dll,需要修改2个地方
资源--- 对话框--- 7000 
资源--- 对话框--- 7005
将以上两处的键值禁用即可。

13、禁止更改系统桌面,修改 Shdoc401.dll,有2处地方需要修改
资源--- 对话框--- 29952--- PushButton:浏览 
资源--- 对话框--- 29952--- PushButton:图案
将以上两处的键值禁用即可。

14、禁止系统文件夹自定义,修改 Shd401lc.dll,有2处地方需要修改
资源--- 对话框--- 29957 
资源--- 对话框--- 29958
将以上两处的键值禁用即可。

15、禁止文件保存路径及打开,修改 Comdlg32.dll,有2处地方需要修改
资源--- 对话框--- 1547 
资源--- 对话框--- 1548
将以上两处的键值禁用即可。

注意事项
1、本文以Windows XP/2000操作系统的DLL文件修改为例,并不一定适用于Windows 98操作系统,请在修改DLL文件时注意。
2、在禁止下载的操作中,除修改禁止下载的链接文件Shdoclc.dll外,还要修改禁止文件另存为的链接文件Shdoclc.dll。如果修改一个链接文件无法实现相应的功能,请查看其他链接文件中是否存在需要修改的键值。
3、修改后的DLL链接文件,需要在DOS模式下导入并重新启动机器才有效。
4、本文章只介绍了我们日常操作中经常用到的DLL修改选项,其他选项请参看DLL文件中的具体选项进行修改。
5、在修改DLL文件前,请先备份系统原有的DLL文件,以备修改失败恢复。
 
 









本文转自 MicroMeng 51CTO博客,原文链接:http://blog.51cto.com/MicroMeng/25101,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
9161 0
Unity与 SO 交互 ☀️| .so文件(动态链接库 ) 基础知识科普
📢前言 因为最近用到了so文件相关内容 所以来学习一下.so文件相关的知识,正好来写博客也当是记录并分享一些知识 最终目的是在Unity中与so文件进行交互处理,但是本篇文章需要先对so文件有一个基本的认识 这样在后面交互流程中也能 加深一点理解
67 0
如何查看一个运行的exe执行程序需要有哪些DLL动态链接库
如何查看一个运行的exe执行程序需要有哪些DLL动态链接库 第一步: 打开“360安全卫士”软件 笔者的360安全卫士的版本是:8.8 第二步: 打开“功能大全”菜单 第三步: 运行“360任务管理器”。
1137 0
动态链接库DLL
动态链接库DLL 一、介绍 动态链接库DLL(Dynamic Link Library)是Windows的组成要素之一,是包含共享函数库的二进制文件,可以被多个应用程序同时使用。
723 0
12、动态链接库,dll
动态链接库通常都不能直接运行,也不能接收消息。它们是一些独立的文件,其中包含能被可执行程序或其它DLL调用来完成某项工作的函数。只有在其它模块调用动态链接库中的函数时,它才发挥作用。 1、我们可以把完成某种功能的函数放在一个动态链接库中,提供给其它函数调用。
683 0
VS2010编写动态链接库DLL及单元测试用例,调用DLL测试正确性
本文将创建一个简单的动态链接库,并编写一个控制台应用程序使用该动态链接库,该动态链接库为“JAVA调用动态链接库DLL之JNative学习”中使用的DLL,只是项目及文件名称不同。 创建动态链接库项目:1、打开Microsoft Visual Studio 2010,选择文件->新建->项目。
936 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
13773 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19810 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18062 0
+关注
20381
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载