Windows可执行文件的Madifest

Windows可执行文件的Madifest

这里的Madifest不是安卓app根目录res下的AndroidManifest.xml,Madifest也是一个XML的描述文件,但它存在于Windows系统。每个DLL都有DLL的Manifest文件,每个应用程序也有自己的Manifest,
Manifest可以是一个和exe/Dll文件在同一目录下的.manifest文件,也可以作为一个资源嵌入在exe/Dll文件内部。Windows客户端软件测试建议增加这个的自动化测试。

XP及以后的系统,会首先读取Manifest,获得exe文件需要调用的DLL列表(此时获得的,不是DLL文件的本身的位置,而是DLL的manifest),操作系统再根据DLL的Manifest提供的信息去寻找对应的DLL ,这样就可能区别不同版本的同一个DLL文件。可能出现程序可以在win 2000系统运行,而在XP及2003上无法运行的情况,木马可以利用这个特点实现限制安全软件。

知道中抄来的Manifest分类

1. 应用程序Manifests(Application Manifests):这类Manifests则用于描述隔离应用程序,它管理着此应用程序在运行时要绑定的共享的并行组件的名字、版本。该Manifests可以作为一个文件(.manifest文件)存储在应用程序相同的目录下,也可以作为一种资源嵌入在可执行文件内部(Embed Manifest)。
2. 应用程序配置文件(Application Configuration Files):对于并行组件及隔离应用程序来说,使用这种Manifests来“Override and Redirect”所依赖程序集的版本。
3. 发行配置文件(Publisher Configuration Files):用于重定向并行组件的版本倒另外一个合适的版本的Manifests。此时,被重定向的新程序集应该和原来的旧程序集具有相同的主.次(majou.minor)版本号。

4. 程序集Manifests(Assembly Manifests):主要用于描述程序集,管理程序集的名字、版本、资源、依赖程序集。其中共享程序集的Manifests存储在C:\WINDOWS\WinSxS\Manifests\目录中。私有的程序集Manifests则存可以作为一个资源存储在DLL中,也可以存储在应用程序目录下。

C:\WINDOWS\WinSxS\Manifests\下有许多XML格式的manifest文件,这些文件建议不要删除.

6san.com

发表评论