linux中的manifest的作用,Manifest用途

linux中的manifest的作用,Manifest用途关于让自己的程序界面实现 XP 风格这个问题 在网上的讨论很多 大多数的作法都是写一个 manifest 文件 然后将文件名改一下 比如 exe 文件为 test exe 就将这个 manifest 文件改名成 test exe manifest 并将其和 test exe 放在同一个目录里 这样 test exe 在 XP 或 2003 必须启动 Themes 服务 下运行时就会呈现 XP 界面风格 那么这个方法为什么有效和怎么将

关于让自己的程序界面实现XP风格这个问题,在网上的讨论很多,大多数的作法都是写一个.manifest文件,然后将文件名改一下,比如.exe文件为test.exe,就将这个.manifest文件改名成test.exe.manifest,并将其和test.exe放在同一个目录里,这样test.exe在XP或2003(必须启动Themes服务)下运行时就会呈现XP界面风格。那么这个方法为什么有效和怎么将manifest内嵌到exe呢?下面是从网络收集到的一些资料:

1、manifest的原理与用途

dll是被动态调用的,所以会被若干个程序共享使用的

但是如果dll在应用程序不知道的情况下升级了、或是被另一个程序更改了,就可能会出现问题,即”DLL Hell”。

随着系统资源越来越丰富,硬盘不那么紧张,所以在XP以后的操作系统中,用新的机制来管理DLL(这种机制,这不仅仅是对于.NET而言,对于普通的Native程序也是一样的)。这种新的机制就是使用manifest文件。

Manifest是个XML的描述文件,对于每个DLL有DLL的Manifest文件,对于每个应用程序Application也有自己的Manifest。对于应用程序而言,Manifest可以是一个和exe文件同一目录下的.manifest文件,也可以是作为一个资源嵌入在exe文件内部的(Embed

Manifest)。

XP以前版本的windows,会像以前那样执行这个exe文件,寻找相应的dll,没有分别。Manifest只是个多余的文件或资源,dll文件会直接到system32的目录下查找,并且调用。而XP以后的操作系统,则会首先读取Manifest,获得exe文件需要调用的DLL列表(此时获得的,并不直接是DLL文件的本身的位置,而是DLL的manifest)操作系统再根据DLL的Manifest去寻找对应的DLL

不过使用Visual Studio 2005以后的一个新问题是,VS2005带的8.0新版的C运行库(VC 8.0

CRT)文件在XP以后支持manifest的Windows版本中被调用时,将会check一下Application自身的Manifest,否则将会拒绝被调用这也就是说,使用Visual

Studio开发的Application,Manifest将是必不可少的(搞不懂MS为啥要这样设置,所以与VS2003.NET不同了)(后来想想,除了MS自己说的哪些冠冕堂皇的原因,至少这样一来Linux的Wine模拟要麻烦多了)

除非,你的程序是静态链接的,没有使用dll,只使用了操作系统核心的 Kernel32.dll, User32.dll,

Ole32.dll, 或ShDocVW.dll 等project的设置必须是Use Standard Windows

Libraries、Not Using ATL、No Common Language Runtime

support那么你可以不需要考虑Manifest 可以关掉它。

2、使用manifest文件

本节只讲述VC6.0如何使用manifest文件,关于VS2005或之后的版本,大家可以在网上搜索。

1)先写一个.manifest文件,比如命名为XPStyle.manifest。直接使用记事本或者其他文本编辑工具即可。文件内容如下:

name=”XP style manifest”

processorArchitecture=”x86″

version=”1.0.0.0″

type=”win32″/>

type=”win32″

name=”Microsoft.Windows.Common-Controls”

version=”6.0.0.0″

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221478.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午6:00
下一篇 2026年3月17日 下午6:00


相关推荐

  • linux chmod 755 ,750,777

    linux chmod 755 ,750,777一直没用过chmod777(755,750)的命令,也不知道具体是什么作用,尤其不知道755,750,777分别代表什么意思,只记得有一次咨询一个同门时告诉我不要设置成777模式,后来就没有接触了。因为今天又用到了,所以整理归纳以一下。chmod是Linux下设置文件夹权限的命令,后面一般跟三个数据,代表不用用户群体在这个文件夹上的权限设置:一般是三个数字:chmod750dir_wzg第一个数字表示文件所有者的权限第二个数字表示文件所有者同属一个用户组的其他用户在该文件上的权限

    2022年7月16日
    42
  • 【显卡】rx470显卡挖矿算力,rx470挖矿算力,rx470显卡挖矿超频设置

    【显卡】rx470显卡挖矿算力,rx470挖矿算力,rx470显卡挖矿超频设置已下是RX470显卡挖矿算力参数RX470,8卡矿机,算力是216m,功耗1110w,日产量ETH单位0.00636909

    2022年6月14日
    39
  • kali arp断网攻击与监听_手机arp断网攻击

    kali arp断网攻击与监听_手机arp断网攻击kali使用arpspoof命令进行ARP欺骗,最终效果是利用kali干扰物理机不能正常上网。

    2022年10月6日
    7
  • 网络安全工具列表

    网络安全工具列表网络安全工具列表 Sec Tools List 主要总结渗透中利用到的一些工具 按照 ATT amp CK 矩阵的流程进行分类 在此基础上进行了更细致的划分 一些常用的工具 Nmap MSF Minikatz 不在记录 Initial Access1 信息搜集 1 1 人员泄露信息 浏览器 泄露数据库 datasploitth 社交信息 ScrapedIn 搜索 Linkedin 信息 ThreatIngest Twitter RSS 等文件元数据

    2026年3月26日
    3
  • 深度解析:Claude Code 和 OpenClaw 底层架构的设计取舍

    深度解析:Claude Code 和 OpenClaw 底层架构的设计取舍

    2026年3月14日
    4
  • 两列向量正交有什么性质线性代数_线性代数正交化怎么算

    两列向量正交有什么性质线性代数_线性代数正交化怎么算正交向量  正交是垂直的令一种说法,两个向量正交意味着两个向量的夹角是90°。  这可以用直角三角形的三边解释:  当x和y正交时,二者的点积是0,反过来也一样。这个结论在n维空间也适用,当Rn空间内的两个向量x和向量y正交时:  如果x是零向量,xTy还是0,也意味着零向量和任意向量正交。正交子空间  正交性还可以推广到子空间,如果说一个子空间V和另一个子空间W…

    2025年5月26日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号