Подтвердить что ты не робот

О файле манифеста

Недавно я столкнулся с очень странной проблемой, эта проблема возникает только в Windows XP с пакетом обновления 3 (SP3) и Vista. Вот мои шаги:

  • Создайте две новые папки на рабочем столе (предполагайте имена папок A и B)
  • Скопируйте приложение Microsoft GraphEdit (graphedt.exe) в папку, а затем создайте пустой файл graphedt.exe.manifest. Запустите graphedt.exe, вы увидите сообщение об ошибке, пробел graphedt.exe из-за неправильного манифеста.
  • Скопируйте приложение Microsoft GraphEdit (graphedt.exe) в папку B, запустите graphedt.exe и закройте его, затем создайте пустой файл graphedt.exe.manifest, запустите graphedt.exe снова, вы увидите, что файл манифеста не применим к graphedt.exe. Но если вы измените последнее измененное время graphed.exe, манифест будет работать снова.

Кажется, что Windows будет помнить о статусе, когда EXE использует файл манифеста, но также Windows будет reset старым сохраненным статусом, если вы измените размер EXE или последнюю измененную дату.

4b9b3361

Ответ 1

[Я - текущий поддерживающий SxS в Microsoft]

Хорошее исследование Иган. Вы описываете поведение на Vista, а не на XP SP3.

Исследование существования манифеста при каждом запуске приложения будет проблемой производительности, поскольку обычно приложения либо имеют манифест, либо не делают этого, и это состояние мало меняет. По этой причине в Vista при первом запуске приложения мы кэшируем бит, описывая "это приложение имеет связанный манифест" или "это приложение не имеет манифеста". Когда вы запускаете graphedt.exe в первый раз, Windows кэширует отсутствие манифеста и впоследствии не ищет его. В reset кэш обновите последнее измененное время на исполняемом файле.