全面解析DLL文件

[转自水森]

      

一、什么是DLL

       DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。
       DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序

可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。
       DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相

对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的 DLL文件被称为共享DLL文件。DLL文件一般被存放在C:/Windows/System目录下。
       一般来说,DLL 是一种磁盘文件,以.dll、.DRV、.FON、.SYS 和许多以 .EXE 为扩展名的系统文件都可以是 DLL。它由全局数据、服务函数和资源组成,在运行时被系统加载到调用进程的虚拟空间中,成为调用进程的一部分。如果与其它 DLL 之间没有冲突,该文件通常映射到进

程虚拟空间的同一地址上。DLL 模块中包含各种导出函数,用于向外界提供服务。DLL 可以有自己的数据段,但没有自己的堆栈,使用与调用它的应用程序相同的堆栈模式;一个 DLL 在内存中只有一个实例;DLL 实现了代码封装性;DLL 的编制与具体的编程语言及编译器无关。

二、DLL的使用
   

1、如何了解某应用程序使用哪些DLL文件
       右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。
       2、如何知道DLL文件被几个程序使用
       运行Regedit,进入HKEY_LOCAL_MACHINE/Software/Microsrft/Windows/Current-
Version/SharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。
       3、如何解决DLL文件丢失的情况
       有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。

 

4、创造DLL:(如上图)
1) 建立带有输出原型/结构/符号的头文件。
2) 建立实现输出函数/变量的C/C++源文件。
3) 编译器为每个C/C++源文件生成.obj模块。
4) 链接程序将生成DLL的.obj模块链接起来。
5) 如果至少输出一个函数/变量,那么链接程序也生成lib 文件。
创造EXE:
6) 建立带有输入原型/结构/符号的头文件。
7) 建立引用输入函数/变量的C/C++源文件。
8) 编译器为每个C/C++源文件生成.obj源文件。
9) 链接程序将各个.obj模块链接起来,产生一个.exe文件
    (它包含了所需要DLL模块的名字和输入符号的列表)。
运行应用程序:
10) 加载程序为.exe 创建地址空间。
11) 加载程序将需要的DLL加载到地址空间中进程的主线程开始执行;
     应用程序启动运行。

三、DLL常见故障与修复

1.加载cnsmin.dll时出错
故障提示:加载c:/windows/downlo-l/cnsmin.dll时出错,拒绝访问。
解决方法:点击“开始→运行”,在运行框中输入“msconfig”,点击“启动”选项卡,把“cnsmin”项前的勾选取消,点击“确定”。
2.加载update.dll时出错
故障提示:加载c:/winsows/system32/update.dll时出错。找不到指定的模块。
解决方法:可能是病毒或者是恶意软件,自身加入启动项后,被杀毒软件之类的程序删除掉了,所以开机会出现此错误!运行“msconfig”打开“系统配置实用工具”,在“启动”选项卡中把“update.dll”项前的勾取消即可。
3.加载streamci时出错
故障提示:加载streamci时出错,找不到指定的模块。
解决方法:streamc.dll是安装流媒体硬件设备相关的文件可以从安装盘或者其他机器(必须是相同版本的操作系统)上复制下来放到故障机的c:/windows/system32下,或者直接下载文件放进去也行。
下载地址:http://work.newhua.com/cfan/200624/streamci.rar
4.加载wxr5go93.dll时出错
故障提示:加载c:/windows/downlo-l/wxr5go93.dll出错,找不到指定的模块。
解决方法:首先运行msconfig,然后选择“有选择的启动”,勾选“加载系统服务”,剩下三项的勾选状态全部去除。然后点击“服务”选项卡,勾选“隐藏所有microsoft服务”,然后取消列表中所有项目前的勾选,点击“确定”后重起电脑,大部分问题可以解决。
5.加载rundll32时出错
故障提示:rundll32加载时出错,找不到指定的模块。
解决方法:这一般是木马清除掉之后没有修复注册表里的启动项造成的,有时软件没卸载干净也会这样。点击“开始→运行”,输入regedit.exe回车打开“注册表编辑器”,然后点击展开分支[HKEY_LOCAL_MACHINE/Software/Microsoft/windows/CurrentVersion/Runl,在右侧窗格中删除掉出错的键值,就阻止了出错项的自启动。
6.加载DTSERV~1.DLL时出错
故障提示:加载c:/DOCUME~l/[用户名]LOCALS~l/TEMP/RASFXO/DTSERV~l.dll时出错,找不到指定模块。
解决方法:这个也是杀不掉病毒伪装的系统文件后,开机加载项没有清理干净造成的。以上的方法都不行,安装卡卡安全助手,然后运行软件,在“系统修复→启动项管理”中找到相应项,取消它的勾选状态再重启一下就解决了。
7.加载cmicnfg.cpl时出错
故障提示:加载cmicnfg.cpl时出错,找不到指定的模块。
解决方法:这是由于非法关机,使用POMAG等软件调整过分区容量造成的系统文件丢失。首先把声卡驱动卸载掉,然后把windows xp的安装光盘放入光驱,运行“sfc /scannow”命令,系统修复完有问题的文件后,取出光盘重启,再次安装声卡驱动程序,故障解决。
8.加载QAHook.dll时出错
错误提示:加载c:/PROGRA~l/TENCENT/AddrPlus/QAHook.dll时出错,找不到指定的模块。
解决方法:打开“注册表编辑器“,搜索注册表,查找这个出错的文件名,找到相关的内容后都删掉就行了。
9.加载supdate2.dll时出错
错误提示:加载c:/windows/system32/supdate2.dll时出错,找不到指定的模块。
解决方法:这个应该是病毒文件清除之后,在注册表中的启动项目没有清除干净,可以打开“注册表”编辑器,按F3键,输入“supdate2.dll”查找,然后将找到的项目删除即可,一般在以下2个位置能找到它们:
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/windows/CurrentVersion/policies/Explorer/Runl
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/windows/CurrentVersion/Runl
10.加载NMGameX.dll时出错
错误提示:加载NMGAmeX.dll时出错,找不到指定的模块。
解决方法:打开“注册表编辑器”,按F3键,输入“nmgamex.dll”查找,每找到一条就删除该键值,直到全部搜索和删除完成。重启后如果故障依旧,就再次打开“注册表编辑器”,依次展开以下分支。
[HKEY_LOCAL_MACHINE/Software/Microsoft/windows/CurrentVersion/Runl
HKEY_LOCAL_MACHINE/Software/Microsoft/windows/CurrentVersion/RunOncel
[HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run]
找到右侧包含“NMGameX.dll”和“csrss.exe”的键值并删除。可能采用的键值有“c:/WINNT/system32/Rundll32.exe NMGameX.dll,LiveProcess/aa”和“c:/WINNT/csrss.exe”。
11.加载Soundmix.dll时出错
错误提示:加载c:/Windows/system32/Soundmix.dll时出错,找不到指定的模块。
解决方法:打开注册表编辑器,查看该文件名并删除其所在键值,需要注意的是,进程里如果有可疑的项目一定要先结束,否则可能会删除不干净。
12.加载msdc32.dll时出错
错误提示:加载c:/PROGRA~l/common~l/system/msdc32.dll时出错,找不到指定的模块。
解决方法:这是一个广告程序,虽然无害但还是建议彻底删除。打开“注册表编辑器”,展开分支

[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Policies/Explorer/Runl,在右侧窗格中删除“ipsec”键(键值为“rundll32.exe C:/PROGRA~l/COMMON~l/system/msdc32.dll,_Sl”,然后展开[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/Winlogon]分支,删除其下的“Userinit”键(键值为“C:/Windows/system32/userinit.exe,C:/Windows/ .exe”),
接着删除下面3个文件。
1.           C:/PROGRA~l/COMMON~l/system/msdc32.dll
2.           C;/PROGRA~l/COMMON~l/sysytem/mod/mstd.dll
3.           C:/Windows/ .exe
13.加载MSSIGN30.DLL时出错
错误提示:加载MSSIGN30.DLL时出错,找不到指定的模块。
解决方法:打开“注册表编辑器”,展开分支[HKEY_CURRENT-USER/Softare/Microsoft/Windows NT/CurrentVersion/Windows],在右侧窗格中删除“Run”键(键值为“RAVMOND.exe”)。在[HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Runservices]分支中删除“SystemTra”键,(键值为“%Windows%Syftware/Microsoft/Windows/CurrentVersion/Runl分支下,删除“Program In Windows”键(键值为“IEXPLORE.EXE”,是IE的程序文件名,但不应该出现在系统目录下)、“VFW Encoder/Decoder Settings”键(键值为“RUNDLL32.EXE MSSIGN30.DLL ondll_reg”)、“Protected Storage”键(键值为“RUNDLL32.EXE MSSIGN30.DLL ondll_reg”)。
14.开机显示p2psvr.exe出错
错误提示:出现“Microsoft Visual C++runtime Library,Runtime Error!C:/Promram Files/P4P/p2psvr.exe”。
解决方法:这是一个最近出现的恶意程序,还会造成无法访问某些网站或者访问出错。调查发现应该是搜狗直通车在系统里的恶意程序。点击“开始→运行”,输入“regedit”回车打开“注册表编辑器”,展开[HKEY_LOCAL_MACHINE/SYSTEM/CurrentCotrolSet/services]下的“p4p service”分支,把开机时恶意程序加载的服务去除。然后再展开分支[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/control/safeboot,在其下的“minimal”分支中删除“pnp filter”,在“network”分支中删除“pnp filter”。完成后重启。在IE浏览器地址栏中输入“www.dll-files.com”,在网页的“search for dll-files”中输入你要找的DLL文件.
在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,选择启动选项卡或者 选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中

          四、XX.exe-无法找到入口.无法定位程序输入点ASFTimeToPresTime于动态连接库**.DLL上.解决思路
      

       为什么要单独把这一块单独说呢,就因为森水昨天遇到的故障出错提示就是这种,遇到这种情况,森水的通用思路有以下几点:
1、重装directx,(DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的多媒体接口方案。)
Microsoft DirectX 9.0c
大小格式 33.61MB / EXE
http://download.microsoft.com/download/6/3/e/63e8f5ff-02d8-4baf-93b7-4d6f96b9610e/directx_9c_Dec04sdk_redist.exe
http://www.paopaolong.com/upload/down/dx9.0c.rar
这个主要是在运行某些多媒体程序时,出现上述提示,解决思路
2、如果这个问题是由于运行某一个程序引起的,可以尝试重启动该程序甚至覆盖安装。如果你访问很多文件和程序的时候都会出现这种问题,那也有可能是损坏的硬件或者系统本身造成的。你可以进入安全模式,彻底的检查一下那些第三方的常驻内存程序。
3、病毒引起的,比如说早期的尼姆达就是会出现类似提示!!建议全盘扫描,删除多余DLL文件,替换被损破的DLL文件,具体下载在第6条上有地址。
4、硬件驱动不兼容造成的!
5、可以尝试手动regsvr32 *.dll加载注册DLL文件
6、下载同名DLL文件替换文件,具体地址为:http://www.mydll.com.cn/dll.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值