Windows 应用程序清单的语法非常松散——无法识别的部分会被忽略。我如何诊断哪些部分被识别,哪些未被识别?
导致此问题的问题在于具有并行 UAC 清单的应用程序,其中指定的requestedExecutionLevel为最高可用。这应该关闭 Vista 文件虚拟化,但事实并非如此。我想知道为什么。清单正在被使用,因为我通过故意引入语法错误进行检查,但我看不出有什么方法可以确定它是如何被使用的。
Windows 应用程序清单的语法非常松散——无法识别的部分会被忽略。我如何诊断哪些部分被识别,哪些未被识别?
导致此问题的问题在于具有并行 UAC 清单的应用程序,其中指定的requestedExecutionLevel为最高可用。这应该关闭 Vista 文件虚拟化,但事实并非如此。我想知道为什么。清单正在被使用,因为我通过故意引入语法错误进行检查,但我看不出有什么方法可以确定它是如何被使用的。
我遇到了类似的问题:任务管理器显示为正在运行的应用程序启用了虚拟化,尽管应用程序显示为最高可用。我尝试使用 mt.exe 来显示我的文件。它对一些人有效,但对另一些人无效。这种奇怪的行为让我觉得 Vista 中有一些持久缓存会根据 exe 的时间戳影响 UAC 信息。解决方案是使用Resource Tuner中的清单向导。
请参阅我对 Wylder 的评论 - 您是否尝试过更新可执行文件和清单的时间戳?
从提升的命令提示符运行“sxstrace”会返回什么?
你能把你的清单贴在某个地方吗?
有一个缓存。
SxS 激活上下文缓存缓存 .manifest 文件。
从我读过的内容来看,它应该只缓存清单的存在。
它是基于内存的,只有在重新启动时才会清除 - 但是,我知道事实上它并不总是在重新启动时清除,许多其他人也报告了这一点。我确实找到了 c:\windows\sxs\manifestCache 并想知道它是否真的在重新启动时从那里重新加载。
强制的唯一方法是更改 .exe 上的修改日期。
编辑清单时也要小心,如果您不提升编辑器,它将被 UAC 虚拟化 - 当然,加载程序会忽略虚拟化副本。
参考:
我会查看文档以确保它符合规范,但除此之外,据我所知,没有自动化工具可以做同样的事情。