13

最近,我遇到了一个很奇怪的问题,这个问题只发生在 Windows XP SP3 和 Vista 中。这是我的步骤:

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

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

4

1 回答 1

19

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

好查宜岗。您描述的是 Vista 上的行为,而不是 XP SP3 上的行为。

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

于 2009-01-16T01:09:09.023 回答