app.manifest是啥文件,如何打开一个程序的manifeast文件?谢谢回答。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了app.manifest是啥文件,如何打开一个程序的manifeast文件?谢谢回答。相关的知识,希望对你有一定的参考价值。

app.manifest是清单文件。每个安卓应用程序必须有一个app.manifest文件,在app/manifests目录中。它在简单的android系统的应用中提出了重要的信息,信息系统必须具备之前,它可以运行任何应用程序的代码。Notepad++可以用来打开一个程序的manifeast文件。

工具/材料:以Notepad++、manifeast文件为例。

1、首先在要打开的文件夹中,选中一个程序的manifeast文件。

2、继续在弹出子菜单上,点击“打开方式”选项。

3、然后在当前界面中,双击“Notepad++”软件选项,打开manifeast文件。

4、最后在“Notepad++”软件界面中,显示成功打开manifeast文件。

参考技术A Manifest
Windows XP通过XML文件来实现这一功能,这些XML文件保存了有关应用程序配置的元数据,这里所说的XML文件,就是Manifest清单文件。
Manifest事实上就是一个以.manifest为后缀的XML文件,用于组织和描述隔离应用程序及并行组件,其内部的信息如<assemblyIdentity>元素则标识着一个唯一的程序集,和其他信息一起,他们用于COM类、接口及库的绑定和激活,而这些信息,以往都是存储在注册表中的。另外,Manifests也制定了组成程序集的文件及Windows类。

二、Manifest的分类
在Windows XP中,事实上是在.NET中,把Manifests分类为如下几种类型:
1、程序集Manifests(Assembly 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上无法运行。
这也使得很多木马可以利用这个特点实现限制安全软件。

四、VS2005种的Manifest配置
使用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 等,那么你可以不需要考虑Manifest, 可以关掉它。此时,在VS2005种中,project的设置必须是Use Standard Windows Libraries、Not Using ATL、No Common Language Runtime support

参考资料:http://zhidao.baidu.com/question/280739343.html

本回答被提问者采纳

c#通过app.manifest使程序以管理员身份运行

微软在Windows Vista开始引入了UAC(用户帐户控制)新技术(

)。当程序执行时需要权限的话,UAC会弹出警告消息:让用户确认是否同意允许这个程序改变你的计算机配置,windows需要得到你的许可才可以让程序继续执行下去。

通常我们使用c#编写的程序不会弹出这个提示,也就无法以管理员身分运行。微软的操作系统使用微软的产品方法当然是有的,通过app.manifest配置可以使程序打开的时候,弹出UAC提示需要得到允许才可以继续,这样就获得了管理员的权限来执行程序。

方法如下:

打开vs2005、vs2008等工程,在【解决方案资源管理器】里查看是否有app.manifest这个文件,如果没有的话,通过以下方法创建:

方法1:

1、在【解决方案资源管理器】右键工程名称选择属性;

2、在弹出的该对话框中,选择【安全性】选项卡。

3、勾选【启用ClickOnce安全设置】,并选中【这是完全可信的应用程序】。

4、保存工程,这时候app.manifest就自动创建了。

技术分享图片

技术分享图片


打开app.manifest把默认的配置修改一下,通过代码的注释,可以知道需要修改的节点是【requestedExecutionLevel】


技术分享图片


asInvoker : 如果选这个,应用程序就是以当前的权限运行。

highestAvailable: 这个是以当前用户可以获得的最高权限运行。

requireAdministrator: 这个是仅以系统管理员权限运行。

找到<requestedExecutionLevel  level=”asInvoker” uiAccess=”false” />

把其改为<requestedExecutionLevel  level=”requireAdministrator” uiAccess=”false” />

这时候修改完成,按下F5进行调试,通常会收到如下的错误提示:【ClickOnce 不支持请求执行级别“requireAdministrator”】。

事情好像发生了相互矛盾,上面开启【ClickOnce】便自动创建了app.manifest,现在修改了app.manifest却提示:ClickOnce 不支持请求执行级别“requireAdministrator”。

解决方法是:只要把【启用ClickOnce安全设置】不勾选就可以了。

如果操作步骤正确,按下F5进行调试,会弹出如下的提示框,VS具有提升的权限。

技术分享图片


这样我们编写的应用程序在运行后,就会首先弹出这样一个提示框 , 点【Yes】后,程序才可以继续运行,并且获得系统管理员的权限。

方法2:

为工程项目添加一个类,应用程序清单文件(app.manifest)。


技术分享图片


然后可以看到app.manifest的位置不在Properties属性里了,变成在引用里了,其节点内容也少了一些。

技术分享图片


剩下的方法和上面相同。这样跳过了【启用ClickOnce安全设置】这步,直接执行,不会出错了。

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  c#通过app.manifest使程序以管理员身份运行

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23221.html






相关内容


























以上是关于app.manifest是啥文件,如何打开一个程序的manifeast文件?谢谢回答。的主要内容,如果未能解决你的问题,请参考以下文章

c#通过app.manifest使程序以管理员身份运行

VS2008 C#用manifest提升程序权限后,调试时还是不行,求解

C#程序以管理员身份运行

RC文件如何打开?RC文件怎么打开?RC文件是啥

HBuilder开发移动App——manifest.json文件解析

下载的电子书籍的打开方式是啥?怎么设置?