Freigeben über


Anwendungsmanifeste

Ein Anwendungsmanifest (auch als paralleles Anwendungsmanifest oder Fusionsmanifest bezeichnet) ist eine XML-Datei, die die freigegebenen und privaten parallelen Assemblys beschreibt und identifiziert, an die eine Anwendung zur Laufzeit gebunden werden soll. Hierbei 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
Versammlung Ja
manifestVersion Ja
noInherit Nein
assemblyIdentity Ja
Art Ja
Name Ja
Sprache Nein
processorArchitecture Nein
Version Ja
publicKeyToken Nein
Kompatibilität Nein
Anwendung Nein
supportedOS Nein
Id Ja
maxversiontested Nein
Id Ja
Abhängigkeit Nein
dependentAssembly Nein
Datei Nein
Name Ja
Hashalg Nein
Rautenzeichen Nein
aktivableClass 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 Nein
supportedArchitectures Nein
trustInfo Nein

Dateispeicherort

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

Weitere Informationen finden Sie unter Installieren von parallelen Assemblys.

Dateiname

Standardmäßig sollte ein Anwendungsmanifest denselben Namen wie die ausführbare Datei Ihrer App haben, wobei die .manifest Erweiterung angefügt ist.

Ein Anwendungsmanifest, das sich auf die folgende Dateinamensyntax bezieht example.exe oder example.dll verwenden soll (wenn die 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.

Versammlung

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

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

Das Assemblyelement weist die folgenden Attribute auf.

Attribut Beschreibung
manifestVersion Das manifestVersion-Attribut muss auf 1.0.

noInherit

Fügen Sie dieses Element in ein Anwendungsmanifest ein, um die aktivierungskontexte festzulegen, die aus dem Manifest mit dem Flag "no inherit" generiert wurden. Wenn dieses Flag 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 dieses Flags 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 handelt sich nicht um ein 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.

Attribut Beschreibung
Art Gibt den Anwendungs- oder Assemblytyp an. Der Wert muss win32 und alle 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.
Sprache Identifiziert die Sprache der Anwendung oder Assembly. Wenn die Anwendung oder Assembly sprachspezifisch ist, geben Sie den DHTML-Sprachcode an. In the assemblyIdentity of an application intended for worldwide use (language neutral) omit the language attribute.
Legen Sie in einer assemblyIdentity einer Assembly, die für die weltweite Verwendung (Sprache neutral) vorgesehen ist, den Wert der Sprache auf *. Wahlfrei.
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 gezielt sind. Wahlfrei.
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ßlich sein. Weitere Informationen finden Sie unter Assemblyversionen. Erforderlich.
publicKeyToken Eine 16-stellige hexadezimale Zeichenfolge, die 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 hat keine Attribute. Wahlfrei. Anwendungsmanifeste ohne Kompatibilitätselement, standardmäßig windows Vista-Kompatibilität unter Windows 7.

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

Anwendung

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

supportedOS

Das unterstützteOS-Element weist das folgende Attribut auf. Es hat keine Unterelemente.

Attribut 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 eine Anwendung aktiviert werden, die für Windows Vista entwickelt wurde, um auf einem späteren 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 aktivieren Sie "Betriebssystemkontext". 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 Standard an.

maxversiontested

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

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

Attribut Beschreibung
Id Legen Sie das ID-Attribut auf eine 4-Part-Versionszeichenfolge fest, die die maximale Version von Windows angibt, auf die 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>

Abhängigkeit

Enthält mindestens eine abhängigeAssembly. Es hat keine Attribute. Wahlfrei.

dependentAssembly

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

Datei

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

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

Attribut 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. Wahlfrei.
Rautenzeichen Ein Hash der Datei, auf die nach Namen verwiesen wird. Eine hexadezimale Längenzeichenfolge abhängig vom Hashalgorithmus. Wahlfrei.

aktivableClass

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

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

Das aktivableClass-Element weist die folgenden Attribute auf.

Attribut 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. Gültige Werte sind both, STAoder 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 UTF-8-Codeseite. 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 Codeseiten für ein bestimmtes Gebietsschema für die Legacyanwendungskompatibilität. Moderne Anwendungen werden dringend empfohlen, Unicode zu verwenden. Unter Windows 11 kann activeCodePage auch auf den Wert Legacy oder einen Gebietsschemanamen wie en-US oder ja-JPfestgelegt werden.

  • Auf Computern, die auf einer aktiven UTF-8-Systemcodeseite konfiguriert sind, wird der Prozess von 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 nur mit 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-USoder 932 für ja-JP.

Dieses Element wurde zuerst 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 hat keine Attribute.

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 hat keine Attribute. Die ausführbare Datei muss von Windows Publisher digital signiert werden. Für die interne Verwendung.

disableTheming

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

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
Abwesend Der aktuelle Prozess ist standardmäßig nicht bewusst. Sie können diese Einstellung programmgesteuert ändern, indem Sie die SetProcessDpiAwareness - oder SetProcessDPIAware-Funktion 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 bewusst, und Sie können diese Einstellung nicht programmgesteuert ändern, indem Sie die SetProcessDpiAwareness - oder SetProcessDPIAware-Funktion 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 mit dpi-Werten pro Monitor kompatibel.
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 mit dpi-Werten pro Monitor kompatibel.
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 bewusst, und Sie können diese Einstellung nicht programmgesteuert ändern, indem Sie die SetProcessDpiAwareness - oder SetProcessDPIAware-Funktion 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, das das dpiAwareness-Element unterstützt, ist Windows 10, Version 1607. Bei Versionen, die das dpiAwareness-Element unterstützen, überschreibt die 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 getrennten Elementen 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-wert ist.
Enthält keine erkannten Elemente. Der aktuelle Prozess ist standardmäßig nicht bewusst. Sie können diese Einstellung programmgesteuert ändern, indem Sie die SetProcessDpiAwareness - oder SetProcessDPIAware-Funktion 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 mit dpi-Werten pro Monitor kompatibel.
Das erste erkannte Element ist "permonitorv2" Der aktuelle Prozess verwendet den Dpi-Bewusstseinskontext pro 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 dpi nicht bewusst. Sie können diese Einstellung nicht programmgesteuert ändern, indem Sie die SetProcessDpiAwareness - oder SetProcessDPIAware-Funktion 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, das 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 Hohen DPI-Erfahrung in GDI-basierten Desktop-Apps.

Sie können diese Einstellung programmgesteuert ändern, indem Sie die SetThreadDpiAwarenessContext - oder SetProcessDpiAwarenessContext-Funktion mit DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED Wert aufrufen.

TRUE gibt an, dass dieses Element aktiviert ist. Es 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/2017/WindowsSettings">
      <gdiScaling>true</gdiScaling>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

highResolutionScrollingAware

Gibt an, ob bildlauffähig mit hoher Auflösung aktiviert ist. TRUE gibt an, dass sie aktiviert ist. Es hat keine Attribute.

longPathAware

Aktiviert lange Pfade, die MAX_PATH länge überschreiten. Dieses Element wird in Windows 10, Version 1607 und höher, 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 hat keine Attribute. Die Druckertreiberisolation verbessert die Zuverlässigkeit des Windows-Druckdiensts, 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 ultrahohe Bildlauffunktionen aktiviert sind. TRUE gibt an, dass sie aktiviert ist. Es hat keine Attribute.

msix

Gibt die Identitätsinformationen eines Pakets mit externem Speicherort für die aktuelle Anwendung an (siehe Grant package identity by packaging with external location). Dieses Element wird in Windows 10, Version 2004 und höheren Versionen unterstützt.

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

Attribut Beschreibung
Verlag Beschreibt die Herausgeberinformationen. Dieser Wert muss mit dem Publisher-Attribut im Identity-Element im Paketmanifest Ihrer verpackten App mit dem externen Speicherort übereinstimmen.
packageName Beschreibt den Inhalt des Pakets. 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 segment heap verwendet wird. Segment heap ist eine moderne Heapimplementierung, die im Allgemeinen 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 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/2020/WindowsSettings">
      <heapType>SegmentHeap</heapType>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

supportedArchitectures

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

  • amd64
  • arm64

Dieses Element hat keine Attribute.

Dieses Element wird in 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-kompatiblen Apps sollten dem Anwendungsmanifest eine angeforderte Ausführungsebene hinzugefügt haben. Die angeforderten Ausführungsebenen geben die berechtigungen an, die für eine App erforderlich sind. 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 requestedExecutionLevel descendent des trustInfo-Elements angegeben. Zulässige Werte für Ebene sind:

Wert Beschreibung
asInvoker Die Anwendung wird auf derselben Berechtigungsstufe ausgeführt wie der Prozess, der sie gestartet hat. Sie können die Anwendung auf eine höhere Berechtigungsstufe erhöhen, indem Sie "Als Administrator ausführen" auswählen.
requireAdministrator Die Anwendung wird mithilfe von Administratorberechtigungen ausgeführt. Der Benutzer, der die Anwendung startet, muss 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öchsten Berechtigungsstufe ausgeführt, die sie ausführen kann. Wenn der Benutzer, der die Anwendung startet, Mitglied der Gruppe "Administratoren" ist, ist diese Option mit level="requireAdministrator"identisch. Wenn die höchste verfügbare Berechtigungsstufe höher als die Ebene des Öffnungsprozesses ist, fordert das System zur Eingabe von Anmeldeinformationen auf.

Wenn Sie die Ebene auf highestAvailable festlegen, wird sichergestellt, dass die Anwendung erfolgreich mit benutzern ausgeführt wird, die Mitglieder der Gruppe "Administratoren" sind und nicht. Wenn die Anwendung nur mit administrativem Zugriff auf das System funktionieren kann, stellt das Markieren der App mit einer angeforderten Ausführungsebene von requireAdministrator sicher, dass das System dieses Programm als administrative App identifiziert und die erforderlichen Erhöhungsschritte ausführt.

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

Das requestedExecutionLevel-Element verfügt auch über ein optionales Attribut uiAccess. Legen Sie diesen Wert auf true fest, wenn die Anwendung Die Schutzebenen der Benutzeroberfläche umgehen und Eingaben in Fenster mit höheren Berechtigungen auf dem Desktop umgehen soll. Legen Sie dieses Attribut auf true nur für Barrierefreiheitsanwendungen der Benutzeroberfläche fest. Standardmäßig wird false. 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 Abwärtskompatibilität verwenden möchten, lassen Sie den angeforderten KnotenExecutionLevel 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

Im Folgenden sehen Sie ein Beispiel für ein Anwendungsmanifest für eine Anwendung mit dem Namen MySampleApp.exe. Die Anwendung verwendet die SampleAssembly-Assembly nebeneinander.

<?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>