DLL转移(file.exe.local文件)

http://www.cppblog.com/mzty/archive/2006/09/22/12823.html

DLL转移

M i c r o s o f t给Windows 2000增加了一个D L L转移特性。这个特性能够强制操作系统的加载程序首先从你的应用程序目录中加载文件模块。只有当加载程序无法在应用程序目录中找到该文件时,它才搜索其他目录。为了强制加载程序总是首先查找应用程序的目录,要做的工作就是在应用程序的目录中放入一个文件。该文件的内容可以忽略,但是该文件必须称为A p p N a m e . l o c a l。例如,如果有一个可执行文件的名字是S u p e r A p p . e x e ,那么转移文件必须称为S u p e r A p p . e x e . l o c a l。在 系统内部, L o a d L i b r a r y ( E x )已经被修改,以便查看是否存在该文件。如果应用程序的目录中存在该文件,该目录中的模块就已经被加载。如果应用程序的目录中不存在这个模块,L o a d L i b r a r y ( E x )将正常运行。对于已经注册的C O M对象来说,这个特性是非常有用的。它使应用程序能够将它的C O M对象D L L放入自己的目录,这样,注册了相同C O M对象的其他应用程序就无法干扰你的操作。