Anwendungsmanifeste

Ein Anwendungsmanifest (auch als paralleles Anwendungsmanifest oder Fusionsmanifest bezeichnet) ist eine XML-Datei, welche die freigegebene und private parallele Assemblys beschreibt und erkennt, an welche eine Anwendung zur Laufzeit gebunden werden soll. Dabei sollte es sich um die gleichen Assemblyversionen handeln, die zum Testen der Anwendung verwendet wurden. Anwendungsmanifeste können auch Metadaten für Dateien beschreiben, die für die Anwendung privat sind.

Eine vollständige Auflistung des XML-Schemas finden Sie unter Manifestdateischema.

Anwendungsmanifeste weisen die folgenden Elemente und Attribute auf.

Element Attribute Erforderlich
assembly Ja
manifestVersion Ja
noInherit Nein
assemblyIdentity Ja
type Yes
name Ja
language Nein
processorArchitecture Nein
Version Ja
publicKeyToken Nein
compatibility Nein
application Nein
supportedOS Nein
Id Ja
maxversiontested Nein
Id Ja
Abhängigkeit Nein
dependentAssembly Nein
datei Nein
name Ja
hashalg Nein
hash Nein
activatableClass Nein
name Ja
threadingModel Ja
activeCodePage Nein
autoElevate Nein
disableTheming Nein
disableWindowFiltering Nein
dpiAware Nein
dpiAwareness Nein
gdiScaling Nein
highResolutionScrollingAware Nein
longPathAware Nein
printerDriverIsolation Nein
ultraHighResolutionScrollingAware Nein
msix Nein
heapType No
Unterstützte Architekturen No
trustInfo Nein

Datei-Lagerplatz

Wenn möglich, sollten Sie das Anwendungsmanifest als Ressource in die Datei Ihrer Anwendung .exe oder .dll einbetten. Wenn dies nicht möglich ist, können Sie die Anwendungsmanifestdatei im selben Verzeichnis wie .exe oder .dll platzieren.

Weitere Informationen finden Sie unter Installieren von parallelen Assemblys.

File name

In der Konvention sollte ein Anwendungsmanifest denselben Namen wie die ausführbare Datei Ihrer App haben, wobei die .manifest-Erweiterung an sie angefügt wurde.

Beispielsweise sollte ein Anwendungsmanifest, das auf example.exe oder example.dll verweist, die folgende Dateinamensyntax verwenden (wenn Ressourcen-ID 1 ist, können Sie das <Ressourcen-ID>-Segment der Syntax weglassen).

example.exe.<Ressourcen-ID>.manifest

example.dll.<Ressourcen-ID>.manifest

Elemente

Bei Namen von Elementen und Attributen wird die Groß-/Kleinschreibung beachtet. Die Werte von Elementen und Attributen werden ohne Groß-/Kleinschreibung unterschieden, mit Ausnahme des Werts des Typattributes.

Assembly

Ein Containerelement. Das erste Unterelement muss ein noInherit- oder assemblyIdentity-Element sein. Erforderlich.

Das Assemblyelement muss sich im Namespace urn:schemas-microsoft-com:asm.v1 befinden. Untergeordnete Elemente der Assembly müssen sich auch in diesem Namespace befinden, durch Vererbung oder durch Tagging.

Das Assemblyelement weist die folgenden Attribute auf.

attribute BESCHREIBUNG
manifestVersion Das Attribut manifestVersion muss auf 1.0 festgelegt sein.

noInherit

Fügen Sie dieses Element in ein Anwendungsmanifest ein, um die Aktivierungskontexte festzulegen, die aus dem Manifest mit der Kennzeichnung „no inherit“ generiert wurden. Wenn diese Kennzeichnung nicht in einem Aktivierungskontext festgelegt ist und der Aktivierungskontext aktiv ist, wird es von neuen Threads im selben Prozess, Fenster, Fensterprozeduren und asynchronen Prozeduraufrufen geerbt. Durch Festlegen dieser Kennzeichnung wird verhindert, dass das neue Objekt den aktiven Kontext erbt.

Das noInherit-Element ist optional und wird in der Regel weggelassen. Die meisten Assemblys funktionieren nicht ordnungsgemäß mit einem Aktivierungskontext ohne Vererbung, da die Assembly explizit darauf ausgelegt sein muss, die Verteilung ihres eigenen Aktivierungskontexts zu verwalten. Für die Verwendung des noInherit-Elements müssen abhängige Assemblys, auf die vom Anwendungsmanifest verwiesen wird, ein noInherit-Element im Assemblymanifest aufweisen.

Wenn noInherit in einem Manifest verwendet wird, muss es sich um das erste Unterelement des Assemblyelements handeln. Das assemblyIdentity-Element sollte unmittelbar nach dem noInherit-Element kommen. Wenn noInherit nicht verwendet wird, muss assemblyIdentity das erste Unterelement des Assemblyelements sein. Das noInherit-Element weist keine untergeordneten Elemente auf. Es ist kein gültiges Element in Assemblymanifesten.

assemblyIdentity

Als erstes Unterelement eines Assemblyelements beschreibt assemblyIdentity die Anwendung, die dieses Anwendungsmanifest besitzt, und identifiziert sie eindeutig. Als erstes Unterelement eines abhängigenAssembly-Elements beschreibt assemblyIdentity eine von der Anwendung erforderliche Parallelassembly. Beachten Sie, dass jede Assembly, auf die im Anwendungsmanifest verwiesen wird, eine assemblyIdentity erfordert, die genau mit der assemblyIdentity im eigenen Assemblymanifest der referenzierten Assembly übereinstimmt.

Das assemblyIdentity-Element weist die folgenden Attribute auf. Es hat keine Unterelemente.

attribute BESCHREIBUNG
type Gibt den Anwendungs- oder Assemblytyp an. Der Wert muss win32 und in Kleinbuchstaben sein. Erforderlich.
name Benennt die Anwendung oder Assembly eindeutig. Verwenden Sie das folgende Format für den Namen: Organization.Division.Name. Beispiel: Microsoft.Windows.mysampleApp. Erforderlich.
language Identifiziert die Sprache der Anwendung oder Assembly. Wenn die Anwendung oder Assembly sprachspezifisch ist, geben Sie den DHTML-Sprachcode an. In der assemblyIdentity einer Anwendung, die für die weltweite Verwendung (sprachneutral) vorgesehen ist, wird das Sprachattribute weggelassen.
Legen Sie in einer assemblyIdentity einer Assembly, die für die weltweite Verwendung (Sprache neutral) vorgesehen ist, den Wert der Sprache auf *. Optional.
processorArchitecture Gibt den Prozessor an. Gültige Werte sind x86, amd64, arm und arm64. Sie können auch * angeben, wodurch sichergestellt wird, dass alle Plattformen angezielt werden. Optional.
Version Gibt die Anwendungs- oder Assemblyversion an. Verwenden Sie das vierteilige Versionsformat: mmmmm.nnnnn.ooooo.ppppp. Jeder durch Punkte getrennte Teil kann 0-65535 einschließen. Weitere Informationen finden Sie unter Assemblyversionen. Erforderlich.
publicKeyToken Eine 16-stellige hexadezimale Zeichenfolge, welche die letzten 8 Byte des SHA-1-Hashs des öffentlichen Schlüssels darstellt, unter dem die Anwendung oder Assembly signiert ist. Der öffentliche Schlüssel, der zum Signieren des Katalogs verwendet wird, muss mindestens 2048 Bit sein. Erforderlich für alle gemeinsam genutzten Parallelassemblys.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 ...
<dependency>
   <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
       />
   </dependentAssembly>
</dependency>
...
</assembly>

Kompatibilität

Enthält mindestens eine Anwendung. Es weist keine Attribute auf. Optional. Anwendungsmanifeste ohne Kompatibilitätselement, fallen standardmäßig auf Windows Vista-Kompatibilität unter Windows 7 zurück.

Das Kompatibilitätselement muss sich im Namespace urn:schemas-microsoft-com:compatibility.v1 befinden. Untergeordnete Elemente der Kompatibilität müssen durch Vererbung oder durch Tagging sich auch in diesem Namespace befinden.

anwendung

Enthält mindestens ein unterstütztesOS-Element. Ab Windows 10, Version 1903, kann es auch ein optionales maxversiontested-Element enthalten. Es weist keine Attribute auf. Optional.

supportedOS

Das supportedOS-Element weist das folgende Attribut auf. Es hat keine Unterelemente.

attribute Beschreibung
Id Legen Sie das ID-Attribut auf {e2011457-1546-43c5-a5fe-008dee3d3f0} fest, um die Anwendung mithilfe der Vista-Funktionalität auszuführen. Dadurch kann einer Anwendung, die für Windows Vista entwickelt wurde, ermöglicht werden, auf einem neueren Betriebssystem ausgeführt zu werden.
Legen Sie das ID-Attribut auf {35138b9a-5d96-4fbd-8e2d-a2440225f93a} fest, um die Anwendung mithilfe der Windows 7-Funktionalität auszuführen.
Anwendungen, die Windows Vista, Windows 7 und Windows 8 unterstützen, erfordern keine separaten Manifeste. Fügen Sie in diesem Fall die GUIDs für alle Windows-Betriebssysteme hinzu.
Informationen zum Id-Attributverhalten in Windows finden Sie im Kompatibilitäts-Cookbook für Windows 8 und Windows Server 2012.
Die folgenden GUIDs entsprechen den angegebenen Betriebssystemen:
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}:> Windows 10, Windows 11, Windows Server 2016, Windows Server 2019 und Windows Server 2022
{1f676c76-80e1-4239-95bb-83d0f6d0da78}:> Windows 8.1 und Windows Server 2012 R2
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}:> Windows 8 und Windows Server 2012
{35138b9a-5d96-4fbd-8e2d-a2440225f93a}:> Windows 7 und Windows Server 2008 R2
{e2011457-1546-43c5-a5fe-008deee3d3f0}:> Windows Vista und Windows Server 2008
Sie können dies unter Windows 7 oder Windows 8.x testen, indem Sie den Ressourcenmonitor (Resmon) ausführen, zur Registerkarte CPU wechseln, mit der rechten Maustaste auf die Spaltenbeschriftungen klicken, „Spalte auswählen...“, und „Betriebssystemkontext“ aktivieren. Unter Windows 8.x finden Sie diese Spalte auch im Task-Manager (Taskmgr). Der Inhalt der Spalte zeigt den höchsten gefundenen oder „Windows Vista“ als Standardwert an.

maxversiontested

Das maxversiontested-Element gibt die Versionen von Windows an, auf welche die Anwendung getestet wurde, um mit der mindesten Betriebssystemversion zu beginnen, welche die Anwendung bis zur maximalen Version unterstützt. Die vollständigen Versionen finden Sie hier. Sie soll von Desktopanwendungen verwendet werden, die XAML-Inseln verwenden und nicht in einem MSIX-Paket bereitgestellt werden. Dieses Element wird ab Windows 10, Version 1903 unterstützt.

Das maxversiontested-Element weist das folgende Attribut auf. Es hat keine Unterelemente.

attribute Beschreibung
Id Legen Sie das ID-Attribut auf eine 4-Part-Versionszeichenfolge fest, welche die maximale Version von Windows angibt, auf welche die Anwendung getestet wurde. Beispiel: „10.0.18362.1“ für Windows 10, Version 1903. Erforderlich.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
            <!-- Windows 10, version 1903 -->
            <maxversiontested Id="10.0.18362.1"/>
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
        </application>
    </compatibility>
...
</assembly>

dependency

Enthält mindestens eine dependentAssembly. Es weist keine Attribute auf. Optional.

dependentAssembly

Das erste Unterelement von dependentAssembly muss ein assemblyIdentity-Element sein, das eine von der Anwendung erforderliche Parallelassembly beschreibt. Jede dependentAssembly muss sich innerhalb genau einer Abhängigkeit befinden. Es weist keine Attribute auf.

datei

Gibt Dateien an, die für die Anwendung privat sind. Optional.

Das Dateielement weist die Attribute auf, die in der folgenden Tabelle angezeigt werden.

attribute Beschreibung
name Name der Datei. Beispiel: Comctl32.dll. Erforderlich.
hashalg Algorithmus, der zum Erstellen eines Hashs der Datei verwendet wird. Dieser Wert sollte SHA1 sein. Optional.
hash Ein Hash der Datei, auf die nach Namen verwiesen wird. Eine hexadezimale Längenzeichenfolge abhängig vom Hashalgorithmus. Optional.

activatableClass

Ermöglicht nicht verpackten Desktop-Apps die Verwendung von benutzerdefinierten Komponenten für Windows-Runtime (WinRT). Dieses Element wird ab Windows 10, Version 1903 unterstützt. Weitere Informationen finden Sie in diesem Artikel.

Das aktivableClass-Element muss sich im Namespace urn:schemas-microsoft-com:winrt.v1 befinden.

Das activatableClass-Element weist die folgenden Attribute auf.

attribute Beschreibung
name Gibt den Klassenbezeichner für die aktivierbare Klasse an. Erforderlich.
threadingModel Stellt das Apartmentthreadingmodell dar, das zum Aktivieren eines In-Process-Servers verwendet werden soll. Zu den gültigen Werten zählen both, STA und MTA. Weitere Informationen finden Sie in diesem Artikel. Erforderlich.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<file name="WinRTComponent.dll">
    <activatableClass
        name="WinRTComponent.MessageHolder"
        threadingModel="both"
        xmlns="urn:schemas-microsoft-com:winrt.v1"
     />
</file>
...
</assembly>

activeCodePage

Unter Windows 10 erzwingt dieses Element einen Prozess zur Verwendung von UTF-8 als Prozesscodepage. Weitere Informationen finden Sie auf der Seite UTF-8-Code verwenden. Unter Windows 10 ist der einzige gültige Wert für activeCodePageUTF-8.

Ab Windows 11 ermöglicht dieses Element auch die Auswahl der älteren Nicht-UTF-8-Codeseite oder von Codeseiten für ein bestimmtes Gebietsschema für die Legacyanwendungskompatibilität. Für moderne Anwendungen wird dringend empfohlen, Unicode zu verwenden. Unter Windows 11 kann activeCodePage auch auf den Wert Legacy oder einen Gebietsschemanamen wie en-US oder ja-JP festgelegt werden.

  • Auf Computern, die auf einer aktiven UTF-8-Systemcodeseite konfiguriert sind, wird der Prozess durch Legacy auf die Gebietsschemacodeseiten des Systems zurückgesetzt. Wenn das Systemgebietsschema keine Codeseiten definiert hat, wird Windows-1252/437 verwendet. Die Einstellung Legacy-Codepage wird nur in Fusion-Manifesten unterstützt und beginnt ab Windows 11.
  • Wenn ein Gebietsschemaname wie en-US angegeben wird, wird die Prozesscodeseite für diese Gebietsschemacodeseite entsprechend festgelegt. Beispiel: Windows-1252 und 437 für en-US oder 932 für ja-JP.

Dieses Element wurde zum ersten Mal in Windows 10, Version 1903 (Update vom Mai 2019) hinzugefügt. Sie können diese Eigenschaft und diese Ziel-/Ausführung auf früheren Windows-Builds deklarieren, aber Sie müssen die Erkennung und Konvertierung von älteren Codeseiten wie gewohnt behandeln. Dieses Element weist keine Attribute auf.

Im folgenden Beispiel wird veranschaulicht, wie Sie mit diesem Element erzwingen, dass der aktuelle Prozess UTF-8 als Prozesscodepage verwendet.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings"> 
      <activeCodePage>UTF-8</activeCodePage> 
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

autoElevate

Gibt an, ob die automatische Erhöhung aktiviert ist. TRUE gibt an, dass sie aktiviert ist. Es weist keine Attribute auf. Die ausführbare Datei muss von Windows Publisher digital signiert werden. Nur zur internen Verwendung.

disableTheming

Gibt an, ob das Zuordnen von UI-Elementen zu einem Design deaktiviert ist. TRUE gibt deaktiviert an. Es weist keine Attribute auf.

disableWindowFiltering

Gibt an, ob die Fensterfilterung deaktiviert werden soll. TRUE deaktiviert die Fensterfilterung, sodass Sie immersive Fenster vom Desktop auflisten können. disableWindowFiltering wurde in Windows 8 hinzugefügt und weist keine Attribute auf.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <disableWindowFiltering>true</disableWindowFiltering>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAware

Gibt an, ob der aktuelle Prozess Punkte pro Zoll (dpi) ist.

Windows 10, Version 1607: Das dpiAware-Element wird ignoriert, wenn das dpiAwareness-Element vorhanden ist. Sie können beide Elemente in ein Manifest einschließen, wenn Sie ein anderes Verhalten für Windows 10, Version 1607 als für eine frühere Version des Betriebssystems angeben möchten.

In der folgenden Tabelle wird das Verhalten beschrieben, das auf dem Vorhandensein des dpiAware-Elements und des darin enthaltenen Texts basiert. Bei dem Text innerhalb des Elements wird die Groß-/Kleinschreibung nicht beachtet.

Status des dpiAware-Elements Beschreibung
„Absent“ Der aktuelle Prozess ist standardmäßig nicht dpi-fahig. Sie können diese Einstellung programmgesteuert ändern, indem Sie die Funktion SetProcessDpiAwareness oder SetProcessDPIAware aufrufen.
Enthält „true“ Der aktuelle Prozess ist System-dpi-fähig.
Enthält "false" Windows Vista, Windows 7 und Windows 8: Das Verhalten entspricht dem, wenn die DPIAware nicht vorhanden ist.
Windows 8.1 und Windows 10: Der aktuelle Prozess ist nicht dpi-fähig, und Sie können diese Einstellung nicht programmgesteuert ändern, indem Sie die Funktion SetProcessDpiAwareness oder SetProcessDPIAware aufrufen.
Enthält „true/pm“ Windows Vista, Windows 7 und Windows 8: Der aktuelle Prozess ist System-dpi-fähig.
Windows 8.1 und Windows 10: Der aktuelle Prozess ist pro Monitor dpi-fähig.
Enthält „pro Monitor“ Windows Vista, Windows 7 und Windows 8: Das Verhalten entspricht dem, wenn die DPIAware nicht vorhanden ist.
Windows 8.1 und Windows 10: Der aktuelle Prozess ist pro Monitor dpi-fähig.
Enthält eine andere Zeichenfolge Windows Vista, Windows 7 und Windows 8: Das Verhalten entspricht dem, wenn die DPIAware nicht vorhanden ist.
Windows 8.1 und Windows 10: Der aktuelle Prozess ist nicht dpi-fähig, und Sie können diese Einstellung nicht programmgesteuert ändern, indem Sie die Funktion SetProcessDpiAwareness oderSetProcessDPIAware aufrufen.

Weitere Informationen zu dpi-Sensibilisierungseinstellungen finden Sie in der Entwicklung von Desktopanwendungen mit hoher DPI-Auflösung unter Windows.

dpiAware hat keine Attribute.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAwareness

Gibt an, ob der aktuelle Prozess Punkte pro Zoll (dpi) ist.

Die Mindestversion des Betriebssystems, welche das dpiAwareness-Element unterstützt, ist Windows 10, Version 1607. Bei Versionen, die das dpiAwareness-Element unterstützen, überschreibt das dpiAwareness- das dpiAware-Element. Sie können beide Elemente in ein Manifest einschließen, wenn Sie ein anderes Verhalten für Windows 10, Version 1607 als für eine frühere Version des Betriebssystems angeben möchten.

Das dpiAwareness-Element kann ein einzelnes Element oder eine Liste von durch Trennzeichen getrennte Elemente enthalten. Im letzteren Fall wird das erste (ganz links stehende) Element in der Liste verwendet, das vom Betriebssystem erkannt wird. Auf diese Weise können Sie verschiedene Verhaltensweisen angeben, die in zukünftigen Windows-Betriebssystemversionen unterstützt werden.

In der folgenden Tabelle wird das Verhalten beschrieben, das auf dem Vorhandensein des dpiAwareness-Elements und des Texts basiert, der in seinem am weitesten links erkannten Element enthalten ist. Bei dem Text innerhalb des Elements wird die Groß-/Kleinschreibung nicht beachtet.

dpiAwareness-Elementstatus: Beschreibung
Das Element ist nicht vorhanden Das dpiAware-Element gibt an, ob der Prozess dpi-fähig ist.
Enthält keine erkannten Elemente Der aktuelle Prozess ist standardmäßig nicht dpi-fahig. Sie können diese Einstellung programmgesteuert ändern, indem Sie die Funktion SetProcessDpiAwareness oder SetProcessDPIAware aufrufen.
Das erste erkannte Element ist „System“ Der aktuelle Prozess ist System-dpi-fähig.
Das erste erkannte Element ist „permonitor“ Der aktuelle Prozess ist pro Monitor dpi-fähig.
Das erste erkannte Element ist „permonitorv2“ Der aktuelle Prozess verwendet den dpi-Bewusstseinskontext per-monitor-v2. Dieses Element wird nur unter Windows 10, Version 1703 oder höher, erkannt.
Das erste erkannte Element ist „nicht bekannt“ Der aktuelle Prozess ist nicht dpi-fähig. Sie können diese Einstellung nicht programmgesteuert ändern, indem Sie die SetProcessDpiAwareness oder SetProcessDPIAware aufrufen.

Weitere Informationen zu den von diesem Element unterstützten DPI-Sensibilisierungseinstellungen finden Sie unter DPI_AWARENESS und DPI_AWARENESS_CONTEXT.

dpiAwareness hat keine Attribute.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <dpiAwareness>PerMonitorV2, unaware</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

gdiScaling

Gibt an, ob die GDI-Skalierung aktiviert ist. Die Mindestversion des Betriebssystems, die das gdiScaling-Element unterstützt, ist Windows 10, Version 1703.

Das GDI-Framework (Grafikgeräteschnittstelle) kann die DPI-Skalierung auf Grundtypen und Text pro Monitor anwenden, ohne die Anwendung selbst zu aktualisieren. Dies kann nützlich sein, wenn GDI-Anwendungen nicht mehr aktiv aktualisiert werden.

Nicht Vektorgrafiken (z. B. Bitmaps, Symbole oder Symbolleisten) können von diesem Element nicht skaliert werden. Darüber hinaus können Grafiken und Text, die in Bitmaps dynamisch von Anwendungen erstellt werden, nicht von diesem Element skaliert werden. Weitere Informationen finden Sie unter Verbessern der Erfahrung mit hohem DPI-Wert in GDI-basierten Desktop-Apps.

Sie können diese Einstellung programmgesteuert ändern, indem Sie die Funktion SetProcessDpiAwareness oder SetProcessDPIAware mit dem Wert DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED aufrufen.

TRUE gibt an, dass dieses Element aktiviert ist. Es weist keine Attribute auf.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
      <gdiScaling>true</gdiScaling>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

highResolutionScrollingAware

Gibt an, ob die Bildlauffähigkeit mit hoher Auflösung aktiviert ist. TRUE gibt an, dass sie aktiviert ist. Es weist keine Attribute auf.

longPathAware

Aktiviert lange Pfade, welche die MAX_PATH länge überschreiten. Dieses Element wird ab Windows 10, Version 1607 unterstützt. Weitere Informationen finden Sie in diesem Artikel.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <ws2:longPathAware>true</ws2:longPathAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

printerDriverIsolation

Gibt an, ob die Druckertreiberisolation aktiviert ist. TRUE gibt an, dass sie aktiviert ist. Es weist keine Attribute auf. Die Druckertreiberisolation verbessert die Zuverlässigkeit des Windows-Druckdienstes, indem Druckertreiber in Prozessen ausgeführt werden können, die vom Prozess getrennt sind, in dem der Druckspooler ausgeführt wird. Die Unterstützung für die Druckertreiberisolation wurde in Windows 7 und Windows Server 2008 R2 gestartet. Eine App kann die Druckertreiberisolation im App-Manifest deklarieren, um sich vom Druckertreiber zu isolieren und die Zuverlässigkeit zu verbessern. Das heißt, die App stürzt nicht ab, wenn der Druckertreiber einen Fehler aufweist.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <printerDriverIsolation>true</printerDriverIsolation>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

ultraHighResolutionScrollingAware

Gibt an, ob die Bildlauffunktion mit ultrahoher Auflösung aktiviert ist. TRUE gibt an, dass sie aktiviert ist. Es weist keine Attribute auf.

MSIX

Gibt die Identitätsinformationen eines Pakets mit externem Speicherort für die aktuelle Anwendung an (siehe Erteilen der Paketidentität durch Packen mit externem Speicherort). Dieses Element wird ab Windows 10, Version 2004 unterstützt.

Das msix-Element muss sich im Namespace urn:schemas-microsoft-com:msix.v1befinden. Es weist die in der folgenden Tabelle gezeigten Attribute auf.

attribute BESCHREIBUNG
publisher Beschreibt die Herausgeberinformationen. Dieser Wert muss mit dem Publisher-Attribut im Identity-Element im Paketmanifest Ihrer verpackten App mit dem externen Speicherort übereinstimmen.
Paketname In diesem Thema wird der Inhalt des Pakets beschrieben. Dieser Wert muss mit dem Name-Attribut im Identity-Element im Paketmanifest Ihrer verpackten App mit externem Speicherort übereinstimmen.
applicationId Der eindeutige Bezeichner der Anwendung. Dieser Wert muss mit dem Id-Attribut im Application-Element im Paketmanifest Ihrer verpackten App mit externem Speicherort übereinstimmen.
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="Contoso.PhotoStoreApp"/>
  <msix xmlns="urn:schemas-microsoft-com:msix.v1"
          publisher="CN=Contoso"
          packageName="ContosoPhotoStore"
          applicationId="ContosoPhotoStore"
        />
</assembly>

heapType

Überschreibt die standardmäßige Heap-Implementierung für die zu verwendenden Win32-Heap-APIs.

  • Der Wert SegmentHeap gibt an, dass das Segment Heap verwendet wird. Segment Heap ist eine moderne Heapimplementierung, die generell die Gesamtspeicherauslastung reduziert. Dieses Element wird in Windows 10, Version 2004 (Build 19041) und höher unterstützt.
  • Alle anderen Werte werden ignoriert.

Dieses Element weist keine Attribute auf.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">
      <heapType>SegmentHeap</heapType>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

supportedArchitectures

Gibt für reine ausführbare IL-.NET-Dateien eine Liste der nativen Prozessorarchitekturen an, mit denen die Anwendung kompatibel ist. Kann einen oder mehrere der folgenden Werte enthalten, die durch Leerzeichen voneinander getrennt sind:

  • amd64
  • Arm64

Dieses Element weist keine Attribute auf.

Dieses Element wird ab Windows 11, Version 24H2 und höher unterstützt.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">
      <supportedArchitectures>amd64 arm64</supportedArchitectures>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

trustInfo

Alle UAC-konformen Apps sollten über eine angeforderte Ausführungsstufe verfügen, die zum Anwendungsmanifest hinzugefügt wurde. Die angeforderten Ausführungsebenen geben die für eine Anwendung erforderlichen Rechte an. Weitere Informationen finden Sie unter Auswirkungen der Benutzerkontensteuerung (User Account Control, UAC) auf Ihre Anwendung.

Die angeforderte Ausführungsebene wird mit dem Level-Attribut des untergeordneten requestedExecutionLevel des trustInfo-Elements angegeben. Zulässige Werte für Level sind:

Wert Beschreibung
asInvoker Die Anwendung wird auf derselben Berechtigungsstufe ausgeführt wie der Prozess, der sie gestartet hat. Die Berechtigungen der Anwendung können durch Auswahl von Als Administrator ausführen auf eine höhere Ebene angehoben werden.
requireAdministrator Die Anwendung wird mithilfe von Administratorberechtigungen ausgeführt. Der Benutzer, der die Anwendung startet, muss ein Mitglied der Gruppe "Administratoren" sein. Wenn der Öffnungsprozess nicht mit Administratorberechtigungen ausgeführt wird, fordert das System zur Eingabe von Anmeldeinformationen auf.
highestAvailable Die Anwendung wird auf der höchstmöglichen Berechtigungsstufe ausgeführt. Wenn der Benutzer, der die Anwendung startet, Mitglied der Gruppe „Administratoren“ ist, ist diese Option identisch mit level="requireAdministrator". Wenn die höchste verfügbare Berechtigungsstufe höher als die Ebene des Öffnungsprozesses ist, fordert das System zur Eingabe von Anmeldeinformationen auf.

Durch Festlegen des Levels auf highestAvailable wird sichergestellt, dass die Anwendung erfolgreich bei Benutzern, die Mitglieder der Gruppe „Administratoren“ und bei denen, die es nicht sind, ausgeführt wird. Wenn die Anwendung nur mit Administratorzugriff auf das System funktioniert, stellt das Markieren der App mit einer angeforderten Ausführungsstufe von requireAdministrator sicher, dass das System dieses Programm als eine administrative App identifiziert und die erforderlichen Rechteerweiterungsschritte ausführt.

Standardmäßig bettet der Visual C++-Linker ein UAC-Fragment in das Manifest einer Anwendung mit der Ausführungsebene von asInvoker ein.

Das requestedExecutionLevel-Element verfügt auch über ein optionales Attribut uiAccess. Legen Sie diesen Wert auf true fest, wenn die Anwendung Sicherheitsebenen für Benutzeroberflächen umgehen und Eingaben in Fenster mit höheren Berechtigungen auf dem Desktop lenken soll. Legen Sie dieses Attribut nur für Barrierefreiheitsanwendungen der Benutzeroberfläche auf true fest. Wird standardmäßig auf false festgelegt. Weitere Einschränkungen von Sicherheitsrichtlinieneinstellungen können angewendet werden, siehe Benutzerkontensteuerung: Nur Benutzeroberflächenzugriffsanwendungen mit erhöhten Rechten, die an sicheren Speicherorten installiert sind. Weitere Informationen finden Sie unter Sicherheitsüberlegungen für Hilfstechnologien.

Wenn Sie den Knoten requestedExecutionLevel angeben, wird die Datei- und Registrierungsvirtualisierung deaktiviert. Wenn Sie die Datei- und Registrierungsvirtualisierung für die Rückwärtskompatibilität verwenden möchten, lassen Sie den requestedExecutionLevel-Knoten aus.

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
      <requestedExecutionLevel level="asInvoker" uiAccess="false" />
    </requestedPrivileges>
  </security>
</trustInfo>

Beispiel

Nachfolgend sehen Sie ein Beispiel für ein Anwendungsmanifest für eine Anwendung mit dem Namen MySampleApp.exe. Die Anwendung verwendet die Parallelassembly SampleAssembly.

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32" name="MyOrganization.MyDivision.MySampleApp" version="6.0.0.0" processorArchitecture="*" />
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="*" publicKeyToken="0000000000000000" />
      </dependentAssembly>
   </dependency>
   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
         <!-- Windows 10 and Windows 11 -->
         <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
         <!-- Windows 8.1 -->
         <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
         <!-- Windows 8 -->
         <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
         <!-- Windows 7 -->
         <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
         <!-- Windows Vista -->
         <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
      </application>
   </compatibility>
</assembly>