Windows应用程序清单的语法非常宽松 - 忽略了无法识别的部分。如何诊断哪些部分被识别,哪些部分不被识别?
导致此问题的问题在于具有并排UAC清单的应用程序,其中 requestedExecutionLevel 指定了 highestAvailable 。这应该关闭Vista文件虚拟化,但事实并非如此。我想找出原因。正在使用清单,因为我通过故意引入语法错误来检查,但我认为无法确定它是如何被使用的。
答案 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进行审核以确保它符合规范,但除此之外,根据我的意识,没有自动化工具可以执行同样的操作。