动态链接库文件DLL详解

一、动态链接库的概念

  动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。

  动态链接是相对于静态链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。

  一般情况下,如果一个应用程序使用了动态链接库,Win32系统保证内存中只有DLL的一份复制品,这是通过内存映射文件实现的。DLL首先坏魅隬in32系统的全局堆栈,然后映射到调用这个DLL的进程地址空间。在Win32系统中,每个进程拥有自己的32位线性地址空间,如果一个DLL被多个进程调用,每个进程都会收到该DLL的一份映像。与16位Windows不同,在Win32中DLL可以看作是每个进程自己的代码。

  二、动态链接库的优点

  1. 共享代码、资源和数据

   使用DLL的主要目的就是为了共享代码,DLL的代码可以被所有的Windows应用程序共享。

  2. 隐藏实现的细节

   DLL中的例程可以被应用程序访问,而应用程序并不知道这些例程的细节。

  3. 拓展开发工具如Delphi的功能

  由于DLL是与语言无关的,因此可以创建一个DLL,被C++、VB或任何支持动态链接库的语言调用。这样如果一种语言存在不足,就可以通过访问另一种语言创建的DLL来弥补。

  三、动态链接库的实现方法

  1. Load-time Dynamic Linking

  这种用法的前提是在编译之前已经明确知道要调用DLL中的哪几个函数,编译时在目标文件中只保留必要的链接信息,而不含DLL函数的代码;当程序执行时,利用链接信息加载DLL函数代码并在内存中将其链接入调用程序的执行空间中,其主要目的是便于代码共享。

  2. Run-time Dynamic Linking

  这种方式是指在编译之前并不知道将会调用哪些DLL函数,完全是在运行过程中根据需要决定应调用哪个函数,并用LoadLibrary和GetProcAddress动态获得DLL函数的入口地址。



教你认识动态链接库DLL文件


  DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下。


  1、如何了解某应用程序使用哪些DLL文件

  右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。

  2、如何知道DLL文件被几个程序使用

  运行Regedit,进入HKEY_LOCAL_MACHINESoftwareMicrosrftWindowsCurrent-
VersionSharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。

  3、如何解决DLL文件丢失的情况

  有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sy**ckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。
 
 
四、修改DLL文件的具体应用

  在系统的组策略和注册表中,我们可以修改一些键值来优化我们的系统,并加强操作系统的安全性。可是,对于限制下载、禁止删除文件等功能,我们无法通过上述的操作来完成,这只有通过修改系统DLL文件来实现。目前,我们通过修改系统的DLL文件,可以实现禁止删除文件、禁止IE下载、禁止IE另存为、禁止文件打开方式等功能。

五、系统中部分DLL文件的功能

  1Browselc.dll IE所需要调用的库文件DLL结构雏形就是它了

  2Shdoclc.dll 系统窗口及设置等,如删除文件、重命名

  3Shell32.dll 系统窗口及设置等,如删除文件、重命名

  4Cryptui.dll IE控件下载及提示对话框程序
 
 
 
六、修改DLL文件的方法

  1、下载DLL文件修改工具EXESCOPE6.0-6.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文件,以备修改失败恢复

  DLL修改实例讲解

  ※ 关于系统托盘图标的修改 ※

  网络连接和音量~~~
  这两个都在C:/WINDOWS/system32文件夹下面,可以找到
  (网络连接)图标是在netshell.dll图标项的#1915--#1918
  (音量)stobject.dll图标项的 230--231
  还有 (音量)stobject.dll图标项的 230--231

  ※ 关于打开/保存对话框右上角按钮的修改 ※

  还有好多人提到打开和另存为对话框右上角那个几个位图的问题,在这还是在说一遍:是comctl32.dll里面的位图项124--131,在这下面两个文件夹里面 
  X:/WINDWOS/WinSxS/x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.0.0_x-ww_1382d70a
  X:/WINDWOS/WinSxS/x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.10.0_x-ww_f7fb5805

  ※ 关于IE下载对话框动画的修改 ※

  IE下载的AVI也有好多人问
  在C:/WINDOWS/system32/SHDOCVW.DLL里面的AVI资源256

  ※ 关于资源管理器/IE工具栏按钮的修改 ※

  IE和资源管理器的工具栏按钮的替换位置为shell32.dll位图204--217
  IE角上微标的替换位置为 shell32.dll 里面位图240-242

  ※ 关于关机/注销对话框的修改 ※

  还有问的最多的问题就是关机和注销对话框了
  关机是msgina.dll,
  注销是shell32.dll

  ※ 关于Windows图片查看器的修改 ※

  图片和传真查看器也是比较常见地~~~ 标题栏的字样可以修改里面字符串的第一项 
  下面一排按钮是shimgvw.dll位图项104~107

  ※ 关于控制面板项目的修改 ※

  控制面板的分类视图的各个图标位置为shell32.dll图标项268~276
  控制面板的经典视图的各项图标一般在C:/WINDOWS/system32下对应的.cpl文件,分别为:
  modem.cpl 调制解调器图标
  main.cpl 鼠标图标
  netcpl.cpl网络连接图标
  ODBCCP32.CPL ODBC 数据源
  powercfg.cpl电源选项
  main.cpl 打印机和传真图标
  intl.cpl区域和语言设置图标
  appwiz.cpl 添加/删除应用程序图标
  mmsys.cpl声音与多媒体图标
  sysdm.cpl系统图标
  inetcpl.cpl用户图标
  access.cpl辅助功能选项
  sysdm.cpl添加新硬件
  datetime.cpl日期时间图标
  desk.cpl 显示属性
  main.cpl字体图标
  joy.cpl 游戏控制器图标
  inetcpl.cpl Internet选项图标
  main.cpl 键盘图标
  mstask.dll任务计划图标
  等~~~~~~

  添加/删除应用程序的对话框

  很多人找不到最下面那个设定程序访问和默认值的图标,这里我也帖一下图啦 `~~
  appwiz.cpl 上面三个在位图项的101--103,而不是通常的图标项里面
  而最下面的图标在moricons.dll的图标项114

  ※ 关于系统属性对话框的修改 ※

  好多人想改系统属性对话框上的字和里面对应的图标、位图等,我帮大家收集了一下为下面的几个文件:
  计算机名netid.dll (对话框上的字,对话框项112)
  远程remotepg.dll (对话框上的字,对话框项510)
  自動更新wuaueng.dll(对话框上的字,对话框项501) 
  常规、硬件和高级选项sysdm.cpl (对话框上的字,对话框项101)
  系统还原 srrstr.dll (对话框上的字,对话框项11)

  ※ 关于显示属性对话框的修改 ※

  显示属性对话框也是大家个性化中首要考虑的一个问题~~
  于之相关的文件为themeui.dll和shell32.dll~~~

  ※ 其他 ※

  系统消息中使用的图标,这个大家替换的时候一定要注意一点,图标的格式和原来的图标的格式一定要一样的,否则有可能进不了系统!!!切记
  这个文件为:User32.dll图标项100--105

  工具栏位图替换C:/WINDOWS/PCHEALTH/HELPCTR/Binaries下helpctr.exe里面的位图项300#--303# 还有图标项200#
  还有就是里面的一些图标和位图等下载下面的文件直接替换C:/WINDOWS/PCHEALTH/HELPCTR/System下的images文
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值