Freigeben über


Anwendungsmanifest

Betroffene Plattformen

Clients – Windows 7
Server – Windows Server 2008 R2

Auswirkungen auf Features

Schweregrad : Niedrig
Frequenz – Niedrig

BESCHREIBUNG

Windows 7 führt einen neuen Abschnitt im Anwendungsmanifest mit dem Namen "Kompatibilität" ein. Dieser Abschnitt hilft Windows dabei, die Versionen von Windows zu ermitteln, für die eine Anwendung entworfen wurde, und ermöglicht Es Windows, das Verhalten bereitzustellen, das die Anwendung basierend auf der Windows-Version erwartet, auf die die Anwendung abzielt.

Im Abschnitt Kompatibilität kann Windows neue Verhaltensweisen für neue, von Entwicklern erstellte Software bereitstellen und gleichzeitig die Kompatibilität für vorhandene Software beibehalten. Dieser Abschnitt unterstützt Windows auch bei der Bereitstellung einer besseren Kompatibilität in zukünftigen Windows-Versionen. Eine Anwendung, die im Abschnitt Kompatibilität nur Unterstützung für Windows 7 deklariert, erhält beispielsweise in zukünftigen Versionen von Windows weiterhin Das Windows 7-Verhalten.

Manifestation des Wandels

Anwendungen ohne Kompatibilitätsabschnitt in ihrem Manifest erhalten standardmäßig Windows Vista-Verhalten unter Windows 7 und zukünftigen Windows-Versionen. Beachten Sie, dass Windows XP und Windows Vista diesen Manifestabschnitt ignorieren und keine Auswirkungen darauf haben.

Die folgenden Windows-Komponenten bieten basierend auf dem Abschnitt Kompatibilität in Windows 7 ein abweichendes Verhalten:

RPC-Standardthreadpool

  • Windows 7: Um die Skalierbarkeit zu verbessern und die Threadanzahl zu reduzieren, hat RPC in den NT-Threadpool (Standardpool) gewechselt. Für Windows Vista verwendet RPC einen privaten Threadpool.
    • Für binärdateien, die für Win7 kompiliert wurden, wird der Standardpool verwendet.
    • Wenn I_RpcMgmtEnableDedicatedThreadPool aufgerufen wird, bevor eine RPC-API aufgerufen wird, wird der private Threadpool verwendet (Vista-Verhalten).
    • Wenn I_RpcMgmtEnableDedicatedThreadPool nach einem RPC-Aufruf aufgerufen wird, wird der Standardpool verwendet, I_RpcMgmtEnableDedicatedThreadPool gibt den Fehler 1764 zurück, und der angeforderte Vorgang wird nicht unterstützt.
  • Windows Vista (Standard): Für Binärdateien, die für Windows Vista und niedriger kompiliert wurden, wird der private Pool verwendet.

DirectDraw-Sperre

  • Windows 7: Anwendungen, die für Windows 7 manifestiert sind, können die Sperr-API in DDRAW nicht aufrufen, um den primären Desktop-Videopuffer zu sperren. Dies führt zu einem Fehler, und der NULL-Zeiger für den primären Wird zurückgegeben. Dieses Verhalten wird auch dann erzwungen, wenn die Desktopfenster-Manager-Komposition nicht aktiviert ist. Windows 7-kompatible Anwendungen dürfen den primären Videopuffer zum Rendern nicht sperren.
  • Windows Vista (Standard): Anwendungen können eine Sperre für den primären Videopuffer erhalten, da ältere Anwendungen von diesem Verhalten abhängen. Wenn Sie die Anwendung ausführen, wird der Desktopfenster-Manager deaktiviert.

DirectDraw BitBlock Transfer (Blt) an primary ohne Clipping-Fenster

  • Windows 7: Anwendungen, die für Windows 7 manifestiert sind, werden daran gehindert, Blts im primären Desktop-Videopuffer auszuführen, ohne dass ein Beschneidungsfenster vorhanden ist. Dies führt zu einem Fehler, und der Blt-Bereich wird nicht gerendert. Windows erzwingt dieses Verhalten auch dann, wenn Sie die Desktopfenster-Manager-Komposition nicht aktivieren. Windows 7-kompatible Anwendungen müssen in ein Beschneidungsfenster wechseln.
  • Windows Vista (Standard): Anwendungen müssen ohne Beschneidungsfenster in die primäre Datei wechseln können, da ältere Anwendungen von diesem Verhalten abhängen. Wenn Sie diese Anwendung ausführen, wird der Desktopfenster-Manager deaktiviert.

GetOverlappedResult-API

  • Windows 7: Löst eine Racebedingung auf, bei der eine Multithread-App mit GetOverlappedResult zurückgeben kann, ohne das Ereignis in der überlappenden Struktur zurückzusetzen, wodurch der nächste Aufruf dieser Funktion vorzeitig zurückgegeben wird.
  • Windows Vista (Standard): Stellt das Verhalten mit der Racebedingung bereit, von der Anwendungen möglicherweise abhängig sind. Anwendungen, die dieses Race vor dem Windows 7-Verhalten vermeiden möchten, sollten auf das überlappende Ereignis warten und getOverlappedResult mit bWait == FALSE aufrufen, wenn sie signalisiert werden.

Programmkompatibilitäts-Assistent (PCA)

  • Windows 7: Im Abschnitt "Anwendungen mit Kompatibilität" wird die PCA-Entschärfung nicht angezeigt.
  • Windows Vista (Standard): Anwendungen, die unter bestimmten Umständen nicht ordnungsgemäß installiert werden oder während der Laufzeit abstürzen, erhalten die PCA-Entschärfung. Weitere Informationen finden Sie im Referenzabschnitt.

Nutzen von Featurefunktionen

Aktualisieren Sie das Anwendungsmanifest mit den neuesten Kompatibilitätsinformationen für die Betriebssystemunterstützung. Im Abschnitt werden die Ergänzungen zum Manifest beschrieben:

  • Namespace: Compatibility.v1 (xmlns="urn:schemas-microsoft-com:compatibility.v1">)

  • Abschnittsname: Kompatibilität (neuer Abschnitt)

  • UnterstütztOS: GUID des unterstützten Betriebssystems: Die GUIDs, die den unterstützten Betriebssystemen zugeordnet sind, sind:

    • {e2011457-1546-43c5-a5fe-008deee3d3f0} für Windows Vista: Dies ist der Standardwert für den Switchbackkontext.
    • {35138b9a-5d96-4fbd-8e2d-a2440225f93a} für Windows 7: Anwendungen, die diesen Wert im Anwendungsmanifest festlegen, erhalten das Windows 7-Verhalten.

    Hinweis

    Microsoft generiert und stellt bei Bedarf GUIDs für zukünftige Windows-Versionen bereit.

     

Im Folgenden finden Sie ein Beispiel für ein aktualisiertes Manifest.

Hinweis

Bei den Attribut- und Tagnamen im Anwendungsmanifest wird die Groß-/Kleinschreibung beachtet.

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
      <application> 
        <!--The ID below indicates application support for Windows Vista --> 
          <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> 
        <!--The ID below indicates application support for Windows 7 --> 
          <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> 
      </application> 
    </compatibility>
  </assembly>

Der Wert des Hinzufügens von GUIDs für beide Betriebssysteme im obigen Beispiel besteht darin, Unterstützung auf downer Ebene bereitzustellen. Anwendungen, die beide Plattformen unterstützen, benötigen keine separaten Manifeste für jede Plattform.

Kompatibilitäts-, Leistungs-, Zuverlässigkeits- und Benutzerfreundlichkeitstests

  1. Testen Sie die Anwendung mit dem neuen Kompatibilitätsabschnitt, und SupportedOS ID ={35138b9a-5d96-4fbd-8e2d-a2440225f93a} stellen Sie sicher, dass die Anwendung mit dem neuesten Windows 7-Verhalten ordnungsgemäß funktioniert.
  2. Testen Sie die Anwendung mit dem neuen Kompatibilitätsabschnitt und SupportedOS ID ={e2011457-1546-43c5-a5fe-008deee3d3f0} (oder ganz ohne diesen Abschnitt), um sicherzustellen, dass die Anwendung mit dem Windows Vista-Verhalten unter Windows 7 ordnungsgemäß funktioniert.

Bekannte Probleme

Kontextkonflikt Eine Anwendung wird in einem Windows Vista-Kontext statt in einem Windows 7-Kontext auf einem Computer ausgeführt, auf dem eine x64-Edition von Windows 7 oder Windows Server 2008 R2 ausgeführt wird.

Lösungs-Updates sind verfügbar, um dies für alle unterstützten x64-basierten Versionen von Windows 7 und Windows Server 2008 R2 sowie für alle unterstützten Itanium-basierten Versionen von Windows Server 2008 R2 zu korrigieren. Wechseln Sie zur Seite Microsoft-Support für KB-978637: Eine Anwendung wird in einem Windows Vista-Kontext statt in einem Windows 7-Kontext auf einem Computer ausgeführt, auf dem eine x64-Edition von Windows 7 oder Windows Server 2008 R2 ausgeführt wird, um weitere Details zu erhalten und die richtige Version für Ihr System herunterzuladen.

Absturzabbilddiagnose blockiert

Lösung Wechseln Sie zur Seite Microsoft-Support für KB-976038: Ausnahmen, die von einer Anwendung ausgelöst werden, die in einer 64-Bit-Version von Windows ausgeführt wird, werden für weitere Details ignoriert.