诊断Windows应用程序清单

Don*_*eba 6 windows uac manifest windows-vista

Windows应用程序清单具有非常宽松的语法 - 忽略了无法识别的部分.如何诊断哪些部件被识别,哪些部件不被识别?

导致这个问题的问题是具有并排侧UAC清单与应用requestedExecutionLevelhighestAvailable规定.这应该关闭Vista文件虚拟化,但事实并非如此.我想找出原因.正在使用清单,因为我通过故意引入语法错误来检查,但我认为无法确定它是如何被使用的.

小智 7

有缓存。

SxS 激活上下文缓存缓存 .manifest 文件。

据我所知,它应该只缓存清单的存在。

它是基于内存的,仅在重新启动时清除 - 然而,我知道事实上它并不总是在重新启动时清除,许多其他人也报告了这一点。我确实找到了 c:\windows\sxs\manifestCache 并想知道它是否真的在重新启动时从那里重新加载。

唯一的强制方法是更改​​ .exe 上的修改日期。

编辑清单时还要小心,如果不提升编辑器,它将被 UAC 虚拟化 - 当然,虚拟化副本会被加载器忽略。

参考:


小智 5

我遇到了类似的问题:任务管理器显示为正在运行的应用程序启用了虚拟化,尽管应用程序显示为highestAvailable.我尝试使用mt.exe来显示我的文件.它对某些人起了作用,但对其他人起了作 这种奇怪的行为让我觉得Vista中有一些持久缓存会影响基于exe时间戳的UAC信息.解决方案是使用Resource Tuner中的清单向导.

  • 您的评估是正确的.有两个缓存.首先,基于可执行文件的时间戳,确定Windows是否应该费心来检查清单的存在(即,如果您添加一个清单,更新exe文件时间戳).第二个是清单的内容,键入清单的时间戳(如果它嵌入,可能与exe相同) (6认同)

Eug*_*and 5

请参阅我对 Wylder 的评论 - 您是否尝试过更新可执行文件和清单的时间戳?
从提升的命令提示符运行的“sxstrace”会返回什么?
你能把你的清单贴在某个地方吗?