什么是DLL((动态连接库))

什么是DLL(动态链接库)DLL(动态链接库)?既然是动态的,就有静态的链接库。我想这样说的话,你会更明白:也许有些在DOS下写过程序的人明白这样一件事。我写了一个程序,它的一个功能是90度打印屏幕上的内容,所以我需要把整个程序写出来,放到我所有的代码里,但是如果我再写一个程序,当然不行,我要重新写。如果有五个程序需要调用这个函数,而我的函数需要20K,那么我的硬盘上就会有80K的垃圾(20k*5-20k)。这只是一个函数。你能计算出需要多少个函数来擦除窗口吗?看看所有的按钮,滚动条,列表框\文本框\复选框\表单,打印对话框,颜色对话框,打开,保存,另存为,字体对话框,文件排列,复制和粘贴.这些东西都需要在所有程序里写吗?如果真的是这样的话,那么我们的windows应该是以TB计算的(1TB=1024GB)。也许你说你的硬盘很大,所以运行时它们会占用相同的内容!所以就发展出了动态链接库(dll)的概念:动态链接就是把这些相互链接的函数和函数放到一个特殊形式的windwos可执行文件(dll)中。当生成一个DLL时,程序员需要写出哪些函数将被其他程序访问。这个过程被称为函数的“导出”。当创建一个windows程序时,一个特殊的链接器扫描程序的目标文件并生成一个列表,该列表列出了被调用函数在该DLL中的位置。指定每个函数位置的过程称为函数的“导入”。当程序运行时,一旦需要执行文件中没有的函数,windows会自动加载动态链接库,以便应用程序可以访问这些函数。此时,每个函数的地址将被解析并以动态的方式连接到程序上——这就是“动态连接”一词的由来还有一个好处,就是当你更新这个函数的版本和函数时,静态连接需要做多少工作(假设按照windwos的说法,这样的函数有几千个,使用的程序有100多个,静态连接需要10万次更新,动态连接只需要1000次),从而节省内存空间。动态链接库不一定是dll扩展,也可以是ocx、vbx、exe、drv等。你可以发现,调用WIN32 api的时候,会有来自宿主文件比如那个DLL的指令。现在我在这里讲一些标准dll的用法:看看下面的API语句:public declare function get windows directory lib ' kernel32 '别名' get windows directory ya '(ByVal LP buffer As string,ByVal nSize As Long)只要你见过kernel 32?其实这是kernel32.dll的名字。你可以在你的硬盘上找到他。也就是说,函数GetWindowsDirectory在kernel32.dll,他的别名是getWindowsDirectya,()是他的参数。有两个字符,一个是长整数,返回值也是长整数。Lpbuffer - string,指定用于加载Windows目录名的字符串缓冲区。除非是根目录,否则不会有非活动的“\”字符nsize-Long,lpBuffer字符串的最大长度,返回值为Long,是复制到lpBuffer的字符串长度。如果lpBuffer不够大,无法容纳整个字符串,将返回lpBuffer所需的长度。零意味着失败。这就是API声明的意义!DLL KERNEL32的描述。DLL-低级内核函数。它可以用来完成内存管理、任务管理、资源控制等。用户32。与窗口管理相关的函数。

消息、菜单、光标、定时器、通信和大多数其他不切实际的功能都可以在GDI32中找到。图形设备接口库。与设备输出相关的函数:大部分绘图、显示场景、图元文件、坐标和字体函数都可以在这个梨中找到。这些库提供了一些额外的功能,包括通用对话框,文件压缩和版本控制支持。COMCTL32。一个新的窗口控件集合,如TreeView和RichTextBox等。乍一看好像是为win95做的。但是现在我们也用NT-Netapi32.dll下的Mapi32.dll,e-mail-ODBC32.dll专用功能,访问和控制网络的功能(不用我再说了)。WINMM.DLL,ODBC函数的dll之一(这不是WINDOWS的MM),是多媒体控制访问函数的集合。windows api发展变化很快,快得我们任何一个人都赶不上。好在我们不用掌握所有的Windows API,只需要掌握常用的Windows API,它的规则结构和基本感觉就可以了。这个亮点很重要。Dll文件知识一、DLL文件知识,DLL是DynamicLinkLibrary的缩写,意思是动态链接库。在Windows中,很多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,也就是DLL文件,并放置在系统中。当我们执行一个程序时,会调用相应的DLL文件。一个应用程序可以有多个DLL文件,一个DLL文件可以由几个应用程序共享。这种DLL文件称为共享DLL文件。DLL文件一般存储在C:windows系统目录二、修改DLL文件的具体应用在系统的组策略和注册表中。我们可以修改一些关键值来优化我们的系统,加强操作系统的安全性。但我们无法通过上述操作做到限制下载、禁止删除文件等功能,只能通过修改系统DLL文件来实现。目前通过修改系统的DLL文件,可以实现禁止删除文件、下载IE、保存IE为文件、打开文件等功能。三、系统中部分DLL文件的功能1、Browselc.dllIE需要调用库文件DLL结构的原型2、Shdoclc.dll系统窗口和设置,如删除文件、重命名3、Shell32.dll系统窗口和设置等。如删除文件和重命名4、31018Cryptui.dllIEIE控件下载和提示对话框程序四、修改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。2、禁止将网页添加到收藏夹。只需打开Shdoclc.dll修改资源对话框-21400,并禁用此键值。3、禁止恶意网页加载控件和修改Cryptui.dll文件。只有同时修改五个地方才能完全禁止资源-对话框-130资源-对话框-230资源-对话框-4101资源-对话框-4104资源-对话框-4107才会完全禁止。4、禁止系统删除文件和修改Shell32.dll。这个文件需要在五个地方修改,才能禁止系统删除文件。

资源-对话框-1011资源-对话框-1012资源-对话框-1013资源-对话框-1021资源-对话框-1022只需禁用以上五个地址的键值!5、禁止重命名文件和修改shell32.dll。有两个地方需要修改资源-对话框-1018资源-对话框-1019。把上面两个地方对应的键值改成disabled就行了!6、禁止运行菜单,禁止修改shell32.dll,禁止将资源对话框-1018的键值设置为禁用。7、 shell32.dll禁止移动和修改系统文件,需要修改四个本地资源-对话框-1014资源-对话框-1015资源-对话框-1016资源-对话框-10178、禁止保存目标和修改Shdoclc.dll文件。需要修改三个本地资源-菜单-258-257资源-菜单-258-252资源-菜单-24641-2268。在这次修改中,我们需要删除相应的键值。打开这个键值后,右键菜单里有删除。资源菜单-24641-2268中有多个键值。请一个一个删除。8、禁止通过自定义文件夹选项来修改Shell32.dll文件。以下四个本地资源需要修改-菜单-215-28719资源-菜单-216-28719资源-菜单-217-28719资源-菜单-216。9、禁用IE文件夹选项,并修改Browselc.dll文件。你需要修改三个键值资源-菜单-263(请在此删除更多)-41251(删除)资源-菜单-266(请删除更多)-41329(删除)资源-菜单。10、要禁用98文件共享控件并修改Msshrui.dll,需要修改两个本地资源-对话框- 1 - AutoRadioButton资源-对话框- 30 - AutoRadioButton禁用上述两个地方的键值。其他选项可以根据自己的需要进行修改。找到相应的功能键值,禁用不必要的功能。11、,禁止打开文件。要修改Url.dll,需要修改两个本地资源-对话框-7000资源-对话框-7005,并禁用以上两个地方的键值。12、禁止改变系统桌面和修改Shdoc401.dll。有两个地方需要修改资源-对话框-29952-按钮:浏览资源-对话框-29952-按钮:模式。只需禁用以上两处的键值即可。13、禁止自定义系统文件夹和修改Shd401lc.dll。有两个地方需要修改资源-对话框-29957资源-对话框-29958。只需禁用以上两处的键值即可。15、禁止保存路径和打开文件,以及修改Comdlg32.dll。有两个地方需要修改资源-对话框-1547资源-对话框-1548。只需禁用以上两处的键值即可。六、注1、本文以WindowsXP/2000操作系统的DLL文件修改为例,可能不适用于Windows98操作系统。修改DLL文件时请注意。2、在禁止下载操作中,除了修改禁止下载的链接文件Shdoclc.dll外,还需要修改保存为禁止文件的链接文件Shdoclc.dll。如果修改一个链接文件不能实现相应的功能,请检查其他链接文件中是否有需要修改的键值。3、修改后的DLL链接文件需要在DOS模式下导入,机器需要重启才能生效。4、本文只介绍我们日常操作中经常用到的DLL修改选项。其他选项请参考DLL文件中的具体选项进行修改。5、在修改DLL文件之前,请备份系统的原DLL文件,以防修改失败。