Windows应用程序清单有一个非常宽松的语法 – 无法识别的部分被忽略。 我如何诊断哪些部件被识别,哪些不是?
导致此问题的问题是具有指定了highestAvailable的requestedExecutionLevel的并行 UAC清单的应用程序。 这应该closuresVista文件虚拟化,但它不会。 我想找出原因。 正在使用清单,因为我通过故意引入语法错误来检查,但是我看不出如何使用它。
看到我的评论Wylder – 你试图更新可执行文件和清单的时间戳吗?
什么“sxstrace”从提升的命令提示符运行返回?
你可以在任何地方张贴你的清单吗?
我有类似的问题:任务管理器显示虚拟化已启用运行的应用程序,尽管应用程序被显示为highestAvailable。 我试图使用mt.exe来显示我的文件。 它在一些而不是在其他人上工作。 这种奇怪的行为让我觉得在Vista中有一些持久的缓存,这影响了基于exe时间戳的UAC信息。 解决方案是使用资源调谐器的清单向导。
有一个缓存。
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
我会通过文档审查,以确保它符合规范,但除此之外,就我所知,没有一个自动化的工具来做同样的事情。