逼迫DLL文件交出内存资源 |
作者:中国红客基地 来源:网络/红客基地 更新日期:2006-09-15 浏览次数: 11382 |
简述: 逼迫DLL文件交出内存资源 |
对于菜鸟级的电脑玩家,我们并不需要弄清DLL文件的真实面貌;但如果我们自己的电脑操作水平更上一个台阶的话,那就必须善于管理、利用DLL文件,因为巧妙地用好DLL文件可以让系统运行效率更高!这不,本文下面提供的三则DLL文件管理技巧,可以让系统实现意想不到的运行效果! 1、逼迫DLL文件交出内存资源 不少应用程序在启动时需要调用某些DLL文件,这些DLL文件往往会占用一定的内存资源,但遗憾的是当应用程序被使用完毕退出系统后,那些曾经被调用的DLL文件并不会随程序关闭而自动交出它们所占用的内存资源,这样就容易造成内存资源的浪费,并且随着运行的应用程序越多,系统内存资源就被消耗得越多,最终会影响系统的整体运行效率。那有没有办法逼迫那些已经过时的DLL文件,交出它们所占有的内存资源,从而保证系统内存空间始终处于“干净”状态呢?答案是肯定的,我们可以按照如下步骤来逼迫DLL文件交出内存资源: 依次单击“开始”/“运行”命令,在弹出的系统运行对话框中,输入字符串命令“regedit”,单击“确定”按钮后,打开系统的注册表编辑界面; 在注册表编辑界面中,找到其中的注册表分支HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer(如图1所示);
图 1 在对应“Explorer”子键的右侧窗口区域中,检查一下是否有“AlwaysUnloadDLL”字符串键值的身影,如果没有的话,那可以用鼠标右键单击右侧窗口区域中的空白位置,并从弹出的快捷菜单中依次执行“新建”、“字符串值”命令,然后将新创建好的字符串值名称设置为“AlwaysUnloadDLL”,再用鼠标双击“AlwaysUnloadDLL”键值,在其后界面的“数值数据”文本框中直接输入数字“1”,并单击“确定”按钮,最后刷新一下系统注册表,这样就能逼迫那些过时的DLL文件交出曾经占有的系统内存资源了。 2、逼迫DLL文件交出空间资源
在频繁地安装与卸载应用程序之后,系统中的有些DLL文件就会变成无用的垃圾文件,不过这些垃圾文件仍然会占用系统的硬盘空间资源,时间一长越来越多的垃圾DLL文件就会消耗越来越多的硬盘空间资源。为此,我们可以通过下面的操作步骤,来将无用的垃圾DLL文件删除掉: 依次单击“开始”/“运行”命令,在弹出的系统运行对话框中,输入字符串命令“regedit”,单击“确定”按钮后,打开系统的注册表编辑界面; 用鼠标逐一展开其中的注册表分支HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls(如图2所示);
图 2 在对应“SharedDlls”子键的右侧窗口区域中,我们就能看到当前系统的所有DLL调用情况,要是对应某个DLL文件的数据显示为“0”的话,那就说明没有应用程序使用该DLL文件,那么该DLL文件就是无用垃圾文件,将这些无用的DLL文件名称逐一记录下来; 接下来返回到Windows系统桌面,并依次单击“开始”/“搜索”/“文件或文件夹”命令,然后在弹出的系统搜索文件对话框中,输入前面记录下来的无用DLL文件,再单击“搜索”按钮找到无用DLL文件所在的具体位置,之后将这些找到的DLL文件临时转移到其他位置,并让系统再运行一些日子,看看系统是否能够正常运行,要是系统仍然可以正常运行的话,那我们就能把那些无用的DLL文件真的从硬盘中删除掉了,这样就能有效地节省硬盘空间资源了。 3、借用DLL文件解决系统运行错误
由于许多应用程序的DLL文件都是共用的,一旦对某个应用程序执行了卸载操作之后,共用的那个DLL文件也有可能被随之卸载,这么一来其他应用程序运行时由于找不到共用DLL文件而出现运行错误。当不幸遇到这样的故障现象时,我们不妨通过对DLL文件的注册与卸载,来快速有效地解决各种常见的系统故障。 一般情况下,要注册某个DLL文件时,我们可以打开系统运行对话框,然后在其中输入字符串命令“regsvr32 aaa.dll”(其中regsvr32为动态链接文件的注册命令,aaa.dll文件为具体的目标动态链接文件),单击“确定”按钮后,系统就能自动将目标DLL文件注册成功了!如果要对某个目标DLL文件进行反注册的话,那可以在系统运行对话框中输入“regsvr32 aaa.dll /u”(其中“u”参数表示反注册的意思),单击“确定”按钮后,系统就能自动将目标DLL文件从系统中卸载掉了!比方说,我们要是想将Windows XP系统默认的ZIP压缩功能卸载掉的话,那就可以在系统运行对话框中执行“regsvr32 %windir%\system32\zipfldr.dll /u”字符串命令。 当然,逐个逐个地注册或反注册DLL文件,显然会影响系统的操作效率。事实上,我们完全可以通过创建批处理文件的方法,来快速对多个目标DLL文件进行注册或反注册;例如,我们要想一次性对system32子文件夹中的aa.dll文件与bb.dll文件进行注册的话,就可以打开记事本编辑程序,并在其编辑界面中输入下面的命令代码: @echo off regsvr32 aa.dll /s regsvr32 bb.dll /s 其中“s”参数表示目标DLL文件被注册成功后系统不弹出成功提示窗口,将上面的代码保存成扩展名为bat的批处理后,再用鼠标双击该批处理文件系统就能同时对aa.dll文件与bb.dll文件进行注册操作了。 当然,系统一旦发生DLL文件相关错误时,我们往往无从知道究竟是哪一个目标DLL文件引起的,为了要顺利解决这样的故障,我们索性就将系统system32子文件夹中的所有DLL文件重新进行一下注册。在对所有DLL文件进行快速注册时,可以按照如下操作步骤来进行: 逐一单击“开始”、“运行”项目,打开系统的运行对话框,在其中输入字符串命令“cmd”,单击“确定”按钮后,将系统切换到MS-DOS工作状态; 在DOS命令行中,输入字符串命令“for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 ”,单击回车键后,系统就会自动对所有的DLL文件进行依次注册,一旦出现注册失败的话还会给出相应的失败提示。为了日后方便对所有DLL文件重新注册,我们还可以将上面的字符串命令写入到批处理文件中保存起来,下次需要对所有DLL文件重新注册时只需要双击对应的批处理文件就能解决问题了 |