诊断Windows应用程序清单

时间:2009-04-12 12:50:09

标签: windows windows-vista uac manifest

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

导致此问题的问题在于具有并排UAC清单的应用程序,其中 requestedExecutionLevel 指定了 highestAvailable 。这应该关闭Vista文件虚拟化,但事实并非如此。我想找出原因。正在使用清单,因为我通过故意引入语法错误来检查,但我认为无法确定它是如何被使用的。

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

请参阅我对Wylder的评论 - 您是否尝试更新可执行文件的时间戳?表现?
什么“sxstrace”从提升的命令提示符返回运行? 你可以在某处发布你的清单吗?

答案 2 :(得分:4)

有一个缓存。

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

据我所知,据说它只能缓存清单的存在。

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

强制使用的唯一方法是更改​​.exe。

上的修改日期

编辑清单时,如果不提升编辑器,则会进行UAC虚拟化 - 加载程序忽略虚拟化副本。

参考文献: http://blogs.msdn.com/b/junfeng/archive/2006/10/25/touch-the-exe-after-you-added-a-manifest-for-it-in-vista.aspx http://blogs.msdn.com/b/junfeng/archive/2007/10/01/vista-activation-context-cache.aspx

答案 3 :(得分:0)

我会通过documentation进行审核以确保它符合规范,但除此之外,根据我的意识,没有自动化工具可以执行同样的操作。