2009-01-06 60 views
11

最近我遇到了一个很奇怪的问题,这个问题只发生在Windows XP SP3和Vista中。下面是我的步骤:关于清单文件

  1. 创建桌面两个新的文件夹(假设文件夹名称为A和B)
  2. 复制微软的GraphEdit(graphedt.exe)应用到一个文件夹,然后创建一个空的graphedt.exe.manifest文件中。运行graphedt.exe,您将看到一条错误消息,由于错误清单,graphedt.exe无法运行。
  3. 复制微软的GraphEdit(graphedt.exe)应用到B文件夹,运行graphedt.exe并关闭它,然后创建一个空的graphedt.exe.manifest文件,再次运行graphedt.exe,你会看到清单文件不能适用于graphedt.exe。但是,如果您更改graphed.exe的最后修改时间,清单将再次运行。

看来Windows会在EXE第一次使用清单文件时记住状态,但是如果您更改EXE大小或上次修改日期,Windows也会重置旧记忆状态。

回答

17

[我是微软目前的SxS维护人员]

好调查一岗。您正在描述Vista上的行为,而不是XP SP3上的行为。

每次运行应用程序时,检查是否存在清单会成为性能问题,因为通常应用程序要么具有清单,要么没有清单,并且该状态变化不大。出于这个原因,在Vista上,第一次运行应用程序时,我们缓存一些描述“此应用程序有关联的清单”或“此应用程序没有清单”的位。当您第一次运行graphedt.exe时,Windows会缓存缺少清单,并且随后不会查找清单。要重置缓存,请更新可执行文件的上次修改时间。