第 1 节
作者:
冰点沸点 更新:2021-05-23 21:20 字数:5555
提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。
DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。
DLL可在“C:Windows”目录“C:WindowsSystem”目录和程序的安装目录中找到。如果启动程序,但一个或多个DLL文件丢失或毁坏,则会收到出错消息,如“找不到xyz。dll”。如果启动的程序带有一个过期的DLL文件或不匹配的DLL文件,则会出现“未定义的动态链接调用”消息。这时,你可在其他电脑上找到正确的DLL文件并将它拷贝到适当的目录下,程序就能正确运行。
动态链接库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体;它里面包含的是公共代码或资源。由于DLL代码使用了内存共享技术;在某些地方windows也给了DLL一些更高的权限;因而DLL中可以实现一些一般程序所不能实现的功能;如实现windows的HOOK、ISAPI等。同时;DLL还为不同语言间代码共享提供了一条方便的途径。因而DLL在编程时应用较为广泛;本文将介绍如何在 Delphi 中建立和使用DLL。
从使用效果看;DLL和unit 很像;它们都可以被别的工程模块所调用;但二者在内部的实现机制上确存在着差别。如果一个程序模块中用uses语句引用了某个unit;编译程序在编译该模块时;便会连同unit一起编译;并把编译后的可执行代码链接到本程序模块中;这就是一个程序模块能够调用所引用unit中过程和函数的原因。当同一个unit被多个工程所引用时;则每个工程中都含有该unit的可执行代码;当含有该unit的多个工程同时执行时;unit的可执行代码会随不同工程而多次被调入内存;造成内存资源的浪费。
DLL则不同;它即使被某个工程调用;编译后仍是独立的;也就是说编译后;一个DLL库形成一个单独的可执行文件;而不与任何其它的可执行文件连接在一起;因而DLL库并不从属于某个特定的工程;当多个工程调用同一个DLL库时只有第一个工程把DLL库调入内存;其余工程并不重复调入同一个DLL库到内存;而是到同一个共享内存区读取。并且;DLL的执行代码是在程序运行期间动态调入的;而不是如unit在程序运行时就与整个工程一起调入内存。这样便可消除unit带来的相同代码多处占用内存的弊病。
看看是哪个DLL文件加载出错,可以到网上下载相关文件。估计你的动态链接库内的视频文件加载错,可以需要安装高版本的DirectX或者是摄像头驱动程序有误。
dll文件知识
一、DLL文件常识,DLL是DynamicLinkLibrary的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下
二、修改DLL文件的具体应用在系统的组策略和注册表中,我们可以修改一些键值来优化我们的系统,并加强操作系统的安全性。可是,对于限制下载、禁止删除文件等功能,我们无法通过上述的操作来完成,这只有通过修改系统DLL文件来实现。目前,我们通过修改系统的DLL文件,可以实现禁止删除文件、禁止IE下载、禁止IE另存为、禁止文件打开方式等功能。
三、系统中部分DLL文件的功能
1、Browselc。dllIE所需要调用的库文件DLL结构雏形就是它了
2、Shdoclc。dll系统窗口及设置等,如删除文件、重命名
3、Shell32。dll系统窗口及设置等,如删除文件、重命名
4、Cryptui。dllIE控件下载及提示对话框程序
四、修改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资源对话框…10178、禁止目标另存为,修改Shdoclc。dll文件,需要修改3个地方资源菜单258…257资源菜单258…252资源菜单246412268在这个修改中,我们要把各对应的键值删除。打开该键值后,右键菜单中有删除。在资源菜单24641—2268中,有多项该键值,请逐一删除。
8、禁止自定义文件夹选项修改Shell32。dll文件,需要修改以下4个地方资源菜单215…28719资源菜单216…28719资源菜单217…28719资源菜单216…28719找到以上四处键值,直接需要删除后即可,而不是禁用。
9、禁止IE文件夹选项,修改Browselc。dll文件,需要修改3个键值资源菜单263(这里有多个请删除)…41251(删除)资源菜单266(也有多个请删除)…41329(删除)资源菜单268…41251(删除)在上面的3个键值中,个别键值有多处,请逐一删除。
10、禁止98文件共享控件,修改Msshrui。dll,需要修改2个地方资源…对话框1…AutoRadioButton资源…对话框30…AutoRadioButton将以上两处的键值禁用即可。其他的选项,可以根据自己的需要进行修改。找到相应的功能键值,将不需要的功能,禁用就可以了。
11、禁止文件的打开方式,修改Url。dll,需要修改2个地方资源…对话框…7000资源…对话框…7005将以上两处的键值禁用即可。
12、禁止更改系统桌面,修改Shdoc401。dll,有2处地方需要修改资源…对话框…29952…PushButton:浏览资源…对话框…29952…PushButton:图案将以上两处的键值禁用即可。
13、禁止系统文件夹自定义,修改Shd401lc。dll,有2处地方需要修改资源…对话框…29957资源…对话框…29958将以上两处的键值禁用即可。15、禁止文件保存路径及打开,修改dlg32。dll,有2处地方需要修改资源…对话框…1547资源…对话框…1548将以上两处的键值禁用即可。
六、注意事项
1、本文以WindowsXP/2000操作系统的DLL文件修改为例,并不一定适用于Windows98操作系统,请在修改DLL文件时注意。
2、在禁止下载的操作中,除修改禁止下载的链接文件Shdoclc。dll外,还要修改禁止文件另存为的链接文件Shdoclc。dll。如果修改一个链接文件无法实现相应的功能,请查看其他链接文件中是否存在需要修改的键值。
3、修改后的DLL链接文件,需要在DOS模式下导入并重新启动机器才有效。
4、本文章只介绍了我们日常操作中经常用到的DLL修改选项,其他选项请参看DLL文件中的具体选项进行修改。
5、在修改DLL文件前,请先备份系统原有的DLL文件,以备修改失败恢复
回答者:靓的就是你 … 举人 四级 6…2 12:36
人们常说的“DLL”(Dynamic Link Library)也就是“动态链接库”是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的程序或资源。它和可执行文件(。EXE文件)非常类似,区别在于动态链接库中虽然包含了可执行代码却不能单独执行,而应由相应的应用程序直接或间接调用。
DLL 是一个包含可由多个程序同时使用的代码和数据的库。例如,在 Windows 操作系统中,dlg32 DLL 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。
通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售。可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。
此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,您可能具有一个工资计算程序,而税率每年都会更改。当这些更改被隔离到 DLL 中以后,您无需重新生成或安装整个程序就可以应用更新。
什么是 DLL?
动态链接库 (DLL) 是包含函数和数据的模块的集合。程序文件(如 。exe 文件或 。dll 文件)在运行时加载这些模块(亦即所需的模块映射到调用进程的地址空间)。下面两类函数定义了 DLL: ? 导出函数:这些函数由其他模块调用。
? 内部函数:这些函数仅从定义它们的 DLL 中调用。
DLL 还导出数据。不过,这些数据由相应的函数使用。
动态链接和静态链接
动态链接包括系统在加载或运行时查找导出的 DLL 函数的代码所需的信息。
在静态链接中,链接器将库函数的代码复制到调用 DLL 的每个模块。
可以通过下列方式调用 DLL 中的函数: ? 加载时动态链接:调用方模块执行显式调用以导出 DLL 函数。为 DLL 创建导入库,然后将 DLL 链接到应用程序。在加载应用程序时,导入库提供加载 DLL 和查找导出的 DLL 函数所需的信息。
? 运行时动态链接:在运行时加载 DLL 时,调用方模块使用 LoadLibrary 函数或 LoadLibraryEx 函数。调用方模块调用 GetProcAddress 函数以获取导出的 DLL 函数的地址。
在链接时,Windows 搜索预安装的一组 DLL,例如性能库 (Kernel32。dll) 和安全库 (User32。dll)。然后,Windows 按以下顺序搜索 DLL: 1。 当前进程的可执行程序所在的目录。
2。 当前目录。
3。 Windows 系统目录。(GetSystemDirectory 函数获取 Windows 系统目录的路径。)
4。 Windows 目录。(GetWindowsDirectory 函数获取 Windows 目录的路径。)
5。 PATH 环境变量中列出的目录。
注意:LIBPATH 环境变量不用于搜索。
DLL 和静态库
? DLL 可节省内存并减少交换。 通过在内存中共享 DLL 的单个副本,多个进程可以同时使用一个 DLL。相比之下,对于使用静态链接库构建的每一个应用程序,Windows 都要在内存中为其加载库代码的一个副本。
? DLL 可节省磁盘空间。 多个应用程序可以共享磁盘上的一个 DLL 副本。相比之下,使用静态链接库构建的每一个应用程序都需要让链接到程序文件映像的库代码作为一个单独的专用副本。
? DLL 可节省时间。 更改 DLL 中的函数时,只要函数的参数和返回值不变,就不必重新编译或重新链接使用这些函数的应用程序。但是,如果您使用静态链接的对象代码,则在更改函数后必须重新链接应用程序。
? DLL 可以共享函数。 在 Win32 中,DLL 可以共享函数。默认情况下,数据对于每个进程来说是独立的。但是,静态库包含针对每一个进程的单独的数据副本和函数。
DLL 入口点
DLL 有一个特殊的入口点(DllMain 函数),它在附加和分离进程和线程时运行。此行为允许根据需要创建和销毁数据结构。文件扩展名为 。ocx、。cpl 和 。drv 的文件类型也是 DLL,尽管文件扩展名已改变。在 Window