manifest文件夹下保存着.manifest后缀名的文件;
C:\WINDOWS\WinSxS\Manifests\下有许多XML格式的manifest文件,这些是服务端的程序清单;
WinSxs是windows XP以上版本提供的非托管并行缓存,里面安装了各种版本的经过强文件名签名的系统库,这些文件正是标注了系统中的强文件名签名,如果与manifest 清单里面所列出的依赖项对上的话,就会被加载。
C:\WINDOWS\WinSxS\Manifests\是一个重要的系统文件夹,不建议删除。
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
第一种原因,软件自身损坏,出现这种问题是因为你所下载的软件本身有问题,文件不完整,导致安装后不能打开。出现这种情况需要到官方网站下载最新版本的qq软件。2/7
首先打开qq官网首页,然后点击下载链接开始下载。下载之后安装,如果没有别的软件程序禁止,就能够打开。
3/7
第二种可能的原因是系统组策略禁止qq的运行,你可以通过禁用此设置来达到非得打开qq的目的。首先打开运行框,在运行框中输入gpedit.msc 然后确定。
4/7
在组策略管理器中,依次打开用户配置---管理模板--系统,然后在右面的列表中向下查找不要运行指定的应用程序这样一个选项,然后双击打开。如图。
5/7
如果你发现你的设置为已启用,并且在列表中显示出了你的qq软件,那么说明就是这里给禁止的,你只要禁用它就可以了。
6/7
将已禁用前面的小圆圈选定,如图,不允许的程序列表处的按钮成了灰色的不可点击状态,这时就禁用了这个设置,点击确定退出就可以正常打开 了。
7/7
第三种情况是有些监控类的软件禁止了qq的运行,你只要打开这类监控软件然后设置为取消禁止就可以了。由于监控类软件种类繁多,本经验中不再介绍,请你根据你所安装的监控软件来具体有针对性地设置。
今天我也遇见这个问题,最终的解决方法如下:找到VS的缓存保存文件夹,将文件夹下面的东西全部删除掉,然后就不会出错了。C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\89ae99e4\e0eff96a\assembly\dl3欢迎分享,转载请注明来源:内存溢出
评论列表(0条)