2009-01-06 19 views
11

Recientemente, me encontré con un problema muy extraño, este problema solo ocurre en Windows XP SP3 y Vista. Aquí están mis pasos:Acerca del archivo de manifiesto

  1. crear dos nuevas carpetas en el escritorio (se supone nombres de las carpetas son A y B)
  2. Copia Microsoft (graphedt.exe) aplicación a una carpeta GraphEdit, a continuación, crear un archivo vacío graphedt.exe.manifest también. Ejecute graphedt.exe, verá un mensaje de error, el graphedt.exe no se puede ejecutar debido al manifiesto incorrecto.
  3. Copia Microsoft GraphEdit (graphedt.exe) la aplicación a la carpeta B, dirigido graphedt.exe y cerrarlo, a continuación, crear un archivo vacío graphedt.exe.manifest, graphedt.exe correr de nuevo, verá el archivo de manifiesto no puede aplicarse a graphedt.exe. Pero si cambia la última hora modificada de graphed.exe, el manifiesto funcionará nuevamente.

Parece que Windows recordará el estado la primera vez que el EXE utiliza un archivo de manifiesto, pero también Windows restablecerá el antiguo estado recordado si cambia el tamaño EXE o la última fecha de modificación.

Respuesta

17

[Soy el actual mantenedor SxS en Microsoft]

buena investigación Yigang. Está describiendo el comportamiento en Vista, no en XP SP3.

Probar la existencia de un manifiesto cada vez que se ejecuta una aplicación sería un problema de rendimiento, ya que normalmente las aplicaciones tienen un manifiesto o no, y ese estado no cambia mucho. Por esta razón, en Vista, la primera vez que se ejecuta una aplicación, almacenamos en caché un bit que describe "esta aplicación tiene un manifiesto asociado" o "esta aplicación no tiene un manifiesto". Cuando ejecutó graphedt.exe la primera vez, Windows guardó en caché la ausencia de un manifiesto y, posteriormente, no buscará uno. Para restablecer el caché, actualice la última hora modificada en el ejecutable.

Cuestiones relacionadas