.manifest是什么文件

更新时间:2023-05-16 23:31:38 阅读: 评论:0

.manifest是什么⽂件
Manifest
Windows XP通过XML⽂件来实现这⼀功能,这些XML⽂件保存了有关应⽤程序配置的元数据,这⾥所说的XML⽂件,就是Manifest清单⽂件。
Manifest事实上就是⼀个以.manifest为后缀的XML⽂件,⽤于组织和描述隔离应⽤程序及并⾏组件,其内部的信息如<asmblyIdentity>元素则标识着⼀个唯
⼀的程序集,和其他信息⼀起,他们⽤于COM类、接⼝及库的绑定和激活,⽽这些信息,以往都是存储在注册表中的。另外,Manifests也制定了组成程序集
的⽂件及Windows类。
⼆、Manifest的分类
长春招生在Windows XP中,事实上是在中,把Manifests分类为如下⼏种类型:氨基酸缩写
1、程序集Manifests(Asmbly Manifests):主要⽤于描述程序集,管理程序集的名字、版本、资源、依赖程序集。其中共享程序集的Manifests存储在
Windows的WinSxS⽬录中。私有的程序集Manifests则存可以作为⼀个资源存储在DLL中,也可以存储在应⽤程序⽬录下。
2、应⽤程序Manifests(Application Manifests):这类Manifests则⽤于描述隔离应⽤程序,它管理着此应⽤程序在运⾏时要绑定的共享的并⾏组件的名字、
版本。该Manifests可以作为⼀个⽂件(.manifest⽂件)存储在应⽤程序相同的⽬录下,也可以作为⼀种资源嵌⼊在可执⾏⽂件内部(Embed Manifest)。
3、应⽤程序配置⽂件(Application Configuration Files):对于并⾏组件及隔离应⽤程序来说,使⽤这种Manifests来“Override and Redirect”所依赖程序集
的版本。
4、发⾏配置⽂件(Publisher Configuration Files):⽤于重定向并⾏组件的版本到另外⼀个合适的版本的Manifests。此时,被重定向的新程序集应该和原
来的旧程序集具有相同的主.次(majou.minor)版本号。
三、Windows对于Manifest的处理
XP以前版本的windows,会像以前那样执⾏这个exe⽂件,寻找相应的dll,没有分别,Manifest只是个多余的⽂件或资源,dll⽂件会直接到system32的⽬录
下查找,并且调⽤。
⽽XP及其以后的操作系统,则会⾸先读取Manifest,获得exe⽂件需要调⽤的DLL列表(此时获得的,并不直接是DLL⽂件的本⾝的位置,⽽是DLL的
manifest)操作系统再根据DLL的Manifest提供的信息去寻找对应的DLL ,这样就可能区别不同版本的同⼀个DLL⽂件。
研究生考试时间安排这就说明了为什么我的程序可以在2000下⾯运⾏,⽽在XP及2003上⽆法运⾏。
这也使得很多⽊马可以利⽤这个特点实现限制安全软件。
所以在发布包的时候除了提供VC运⾏环境,也把manifest⽂件提供,如VS2008的VC运⾏库⽬录中Microsoft Visual Studio
balladtoo9.0\VC\redist\x86\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest,其中的内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
jaggad
<asmbly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable></noInheritable>
解释英语
<asmblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></as    <file <span >name="msvcr90.dll" </span>hashalg="SHA1" hash="9785b1c493deb5b2134dc4aef3719cee207001bc"><asmv2:hash xmlns
<file <span >name="msvcp90.dll"</span> hashalg="SHA1" hash="0f6bbf7fe4fb3fca2cb5b542eca1a1cad051f01c"><asmv2:hash
<file <span >name="msvcm90.dll"</span> hashalg="SHA1" hash="7f3290ab2b7444c2b4a9b1fedfdb16466d7a21bb"><asmv2:ha
</asmbly>
四、VS2005种的Manifest配置
卡尔顿大学>resigned
使⽤Visual Studio 2005以后的⼀个新问题是,VS2005带的8.0新版的C运⾏库(VC 8.0 CRT)⽂件在XP以后⽀持manifest的Windows版本中被调⽤时,将会
check⼀下Application⾃⾝的Manifest,否则将会拒绝被调⽤,这也就是说,使⽤Visual Studio开发的Application,Manifest将是必不可少的(搞不懂MS为啥
要这样设置,反正与VS2003不同了,也许除了MS⾃⼰说的哪些冠冕堂皇的原因,⾄少这样⼀来Linux的Wine模拟要⿇烦多了)讲话紧张
不过,如果你的程序是静态链接的,没有使⽤dll,且只使⽤了操作系统核⼼的 Kernel32.dll, Ur32.dll, Ole32.dll, 或ShDocVW.dll 等,那么你可以不需要考
虑Manifest,可以关掉它。此时,在VS2005种中,project的设置必须是U Standard Windows Libraries、Not Using ATL、No Common Language
Runtime support

本文发布于:2023-05-16 23:31:38,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/111229.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   获得   资源   提供   隔离   描述   版本
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图