Freigeben über


Anwendungsmanifeste

Ein Anwendungsmanifest (auch als paralleles Anwendungsmanifest oder ein Fusion Manifest 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
-Assembly- Ja
manifestVersion- Ja
noInherit- Nein
assemblyIdentity- Ja
Typ Ja
Namen Ja
Sprache Nein
processorArchitecture Nein
Version Ja
publicKeyToken- Nein
Kompatibilitäts- Nein
Anwendung Nein
unterstützteOS- Nein
-ID- Ja
maxversiontested Nein
-ID- Ja
Abhängigkeits- Nein
abhängige Nein
Datei- Nein
Namen Ja
hashalg Nein
Hash- Nein
aktivableClass- Nein
Namen Ja
ThreadingModel- Ja
activeCodePage- Nein
autoElevate Nein
deaktivierenTheming- 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 example.exe oder example.dll bezieht, sollte beispielsweise die folgende Dateinamensyntax verwenden (wenn Ressourcen-ID 1 ist, können Sie die <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 -Assembly--Element 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 Assembly--Element weist die folgenden Attribute auf.

Attribut Beschreibung
manifestVersion- Das attribut manifestVersion muss auf 1.0festgelegt werden.

noInherit

Fügen Sie dieses Element in ein Anwendungsmanifest ein, um die Aktivierungskontexte festzulegen, 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, Fenstern, Fensterprozeduren und asynchronen Prozeduraufrufengeerbt. 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. Die Verwendung des noInherit-Elements erfordert, dass alle abhängigen Assemblys, auf die vom Anwendungsmanifest verwiesen wird, ein noInherit--Element in ihrem Assemblymanifesthaben.

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

assemblyIdentity

Als erstes Unterelement einer Assembly Element 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 parallele Assembly. Beachten Sie, dass für jede Assembly, auf die im Anwendungsmanifest verwiesen wird, eine assemblyIdentity- erforderlich ist, die genau dem assemblyIdentity- im assemblymanifest der referenzierten Assembly entspricht.

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

Attribut Beschreibung
Typ Gibt den Anwendungs- oder Assemblytyp an. Der Wert muss win32 und alle in Kleinbuchstaben sein. Erforderlich.
Namen 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 der assemblyIdentity- einer Anwendung, die für die weltweite Verwendung (sprachneutral) vorgesehen ist, wird das Sprachattribute weggelassen.
In einer assemblyIdentity- einer Assembly, die für die weltweite Verwendung (sprachneutral) vorgesehen ist, legen Sie den Wert der Sprache auf *fest. 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 Elements 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-008deee3d3f0} fest, um die Anwendung mit 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 Windows 8 und Windows Server 2012 Compatibility Cookbook.
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, für die die Anwendung mit der Mindestversion des Betriebssystems getestet wurde, 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 einen abhängigenAssembly . Es hat keine Attribute. Wahlfrei.

dependentAssembly

Das erste Unterelement dependentAssembly muss ein assemblyIdentity Element sein, das eine von der Anwendung erforderliche parallele Assembly beschreibt. Jede abhängige muss sich innerhalb genau einer Abhängigkeitbefinden. Es hat keine Attribute.

Datei

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

Die Datei Elements weist die in der folgenden Tabelle gezeigten Attribute auf.

Attribut Beschreibung
Namen Name der Datei. Beispiel: Comctl32.dll. Erforderlich.
hashalg Algorithmus, der zum Erstellen eines Hashs der Datei verwendet wird. Dieser Wert sollte SHA1 sein. Wahlfrei.
Hash- 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
Namen 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 unter Verwenden der UTF-8-Codepage. Unter Windows 10 ist der einzige gültige Wert für activeCodePage-UTF-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 auf einen Gebietsschemanamen wie en-US oder ja-JPfestgelegt werden.

  • Auf Computern, die auf einer aktiven UTF-8-Systemcodeseite konfiguriert sind, wird Legacy- den Prozess auf die Gebietsschemacodeseiten des Systems zurücksetzen. Wenn das Systemgebietsschema keine Codeseiten definiert hat, wird Windows-1252/437 verwendet. Die Codepageeinstellung Legacy 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 verfügt über 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/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 Verhalten, 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 Verhalten, 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 Verhalten, 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 unter 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 die 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--Elements 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 dpi-Sensibilisierungseinstellungen, die von diesem Element unterstützt werden, 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 Verbesserung 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 Gewähren der Paketidentität durch Verpacken mit externem Speicherort). 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
Herausgeber- Beschreibt die Herausgeberinformationen. Dieser Wert muss mit dem attribut Publisher im Identity-Element im Paketmanifest Ihrer verpackten App mit externem Speicherort übereinstimmen.
packageName- Beschreibt den Inhalt des Pakets. Dieser Wert muss mit dem attribut Name im Identity-Element im Paketmanifest Ihrer verpackten App mit externem Speicherort übereinstimmen.
applicationId- Der eindeutige Bezeichner der Anwendung. Dieser Wert muss mit dem attribut ID 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 Heapimplementierung für die Win32-Heap-APIs, die verwendet werden sollen.

  • 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 absteigend vom trustInfo-Element 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ührenauswä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, finden Sie unter 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 requestedExecutionLevel Knoten angeben, wird die Datei- und Registrierungsvirtualisierung deaktiviert. Wenn Sie die Datei- und Registrierungsvirtualisierung für die Abwärtskompatibilität verwenden möchten, lassen Sie die 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

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>