Freigeben über


Anwendungsfunktionsprofiler (ACP)

Verpackte Anwendungen müssen möglicherweise auf Ressourcen außerhalb der Sandbox zugreifen. Beispiele für solche Ressourcen sind u. a. Benutzerdateien, Bilder, Registrierungselemente, Kamera, Standort und Mikrofon. Die Funktionsdeklaration ermöglicht Sandboxanwendungen den Zugriff auf einige dieser Ressourcen. Deklarationen werden im Paketmanifest der Sandboxanwendung vorgenommen. Informationen finden Sie unter „msix-packaging-tool“.

Der Anwendungsfunktionsprofiler ist eine Reihe von Tools, mit denen ermittelt werden kann, welche Funktionen möglicherweise von einem Anwendungspaket deklariert werden müssen, sodass ihm der benötigte Ressourcenzugriff gewährt wird. Darüber hinaus werden nützliche Diagnoseinformationen zu fehlgeschlagenen Zugriffsversuchen durch das Anwendungspaket bereitgestellt.

Wichtig

Dieses Feature befindet sich in der Vorschauphase: Einige Informationen beziehen sich auf ein Vorabversionsprodukt, an dem vor der kommerziellen Freigabe möglicherweise wesentliche Änderungen vorgenommen werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.

Vorbereiten des Zielsystems für die Profilerstellung

Die folgenden Schritte sind erforderlich, um das Zielsystem für die Profilerstellung einzurichten:

  1. Stellen Sie sicher, dass Ihr Benutzerkonto über Administratorrechte für das Windows-Zielsystem verfügt.

  2. Aktivieren Sie den Entwicklermodus im Zielsystem. Diese Einstellung finden Sie unter Windows-Einstellungen | Datenschutz & Sicherheit | Für Entwickler. Weitere Informationen finden Sie unter Aktivieren Ihres Geräts für die Entwicklung.

  3. Installieren Sie PowerShell 7.3 oder höher. Installationsanweisungen finden Sie unter Installieren von PowerShell unter Windows.

    Dies ist für die Kompatibilität des Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler-Moduls erforderlich.

  4. Installieren Sie Windows Performance Recorder (WPR), wenn er noch nicht installiert wurde, und fügen Sie ihn PATH hinzu.

    Anweisungen finden Sie unter Windows Performance Recorder .

    Get-Command wpr
    

    Screenshot des Get-Command-Cmdlets, das in einer PowerShell-Eingabeaufforderung ausgeführt wird

  5. Laden Sie das Archiv des Anwendungsfunktionsprofilers herunter, und extrahieren Sie es in einen für Sie geeigneten Pfad.

    Das Archiv des Anwendungsfunktionsprofilers kann aus den Releaseressourcen dieses Projekts heruntergeladen werden.

  6. Befolgen Sie die Anweisungen für msix-packaging-tool, um die Anwendung zu verpacken und auf dem Zielsystem zu installieren.

  7. Rufen Sie das Zielanwendungspaketmanifest (empfohlen) und/oder den vollständigen Namen des Zielanwendungspakets ab.

    1. (Empfohlen) Rufen Sie das Zielanwendungspaketmanifest ab. Am einfachsten können Sie es mithilfe des MSIX-Pakettools öffnen und eine Kopie des Manifests in einem für Sie geeigneten Pfad speichern.

      Screenshot des Abschnitts „Paketinformationen“ des MSIX-Verpackungstools mit hervorgehobener Schaltfläche „Datei öffnen“

      Screenshot der zu speichernden Manifestdatei

      Screenshot der zu speichernden Manifestdatei im Windows-Speicherdialogfeld

    2. Rufen Sie den vollständigen Namen des Anwendungspakets ab, indem Sie den folgenden Befehl in PowerShell ausführen:

      Get-AppxPackage | where-object {$_.name -like '*Test-AppSilo*'}
      

      Screenshot der Get-AppxPackage-Befehlsausgabe

  8. (Optional) Installieren Sie Windows Performance Analyzer. Anweisungen finden Sie unter Windows Performance Analyzer. Dies ist nicht für die Profilerstellung erforderlich, kann aber hilfreich sein, um einige der von ACP erfassten und ausgegebenen Daten zu visualisieren.

Importieren des PowerShell-Moduls

Informationen zum Modul finden Sie hier: Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler.

Führen Sie den folgenden Befehl in PowerShell mit Administratorrechten aus, um das Modul zu importieren:

Import-Module .\Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler.dll

Hinweis

Das Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler.dll-Modul befindet sich im ACP-Ordner, der aus dem Archiv extrahiert wurde, und zwar im Schritt 5 der Anweisungen zum Vorbereiten des Zielsystems auf Profilerstellung.

Starten der Profilerstellung

Das Cmdlet Start-Profiling verwendet den Pfad zum Zielanwendungspaketmanifest oder den vollständigen Namen des Anwendungspakets.

Start-Profiling instrumentiert das Zielanwendungspaket für die Ablaufverfolgungsprotokollierung und aktiviert einen Anbieter der Ablaufverfolgungsprotokollierung für Zugriffsversuche, die vom Zielanwendungspaket vorgenommen wurden. Weitere Informationen finden Sie unter Start-Profiling.

Führen Sie den folgenden Befehl in PowerShell mit Administratorrechten aus, um die Profilerstellung zu starten:

Start-Profiling -ManifestPath TestApp-AppXManifest.xml

Screenshot eines PowerShell-Befehlsfensters, das das Start-Profiling-Cmdlet ausführt

Ausführen der Anwendungsszenarien

In diesem Schritt ist es wichtig, dass alle kritischen Anwendungsszenarien ausgeführt werden. Profilerstellungsergebnisse sind so umfassend wie die Szenarien, die in diesem Schritt ausgeführt werden. Je mehr Anwendungsszenarien ausgeführt werden, desto größer und vollständiger ist die Datenmenge, die von der oben gestarteten Protokollierungssitzung der Ablaufverfolgung erfasst wurde.

Stoppen Sie die Profilerstellung

Das Cmdlet Stop-Profiling stoppt eine gestartete Sitzung zur Ablaufverfolgungsprotokollierung für Zugriffsversuche und entfernt die Instrumentierung für alle Anwendungspakete, die für die Ablaufverfolgungsprotokollierung instrumentiert wurden.

Stop-Profiling akzeptiert einen optionalen Ablaufverfolgungspfad-Parameter, der den Pfad steuert, der für die ausgegebene Ereignisablaufverfolgungs-Protokolldatei (.etl) verwendet wird. <current_directory>\trace.etl standardmäßig. Weitere Informationen finden Sie unter Stop-Profiling.

Führen Sie den folgenden Befehl in PowerShell mit Administratorrechten aus, um die Profilerstellung zu stoppen:

Stop-Profiling

Screenshot eines PowerShell-Befehlsfensters, das das Stop-Profiling-Cmdlet ausführt

Abrufen der Profilerstellungsergebnisse

Das Cmdlet Get-ProfilingResults analysiert die Ablaufverfolgungsdatei, die aus den obigen Schritten abgerufen wurde, und findet die Funktionen, die für die in der Ablaufverfolgung identifizierten Anwendungspakete erforderlich sind. Es gibt die Funktionen und Informationen für jedes in der Ablaufverfolgung identifizierte Anwendungspaket aus, es sei denn, Filter zu einem bestimmten Paket wurden angegeben.

Get-ProfilingResults akzeptiert den Pfad zur Ablaufverfolgungsdatei, die geparst werden soll. Wenn kein Pfad angegeben wird, versucht Get-ProfilingResults das Cmdlet Stop-Profiling aufzurufen, um eine zu analysierende Ablaufverfolgung abzurufen.

Get-ProfilingResults verwendet optional einen Pfad zu einem Zielanwendungsmanifest. Wenn Informationen in der analysierten Ablaufverfolgung dem Zielanwendungspaketmanifest zugeordnet werden können, wird die Datei direkt mit den Ausgabefunktionen bearbeitet. Andernfalls wird für jedes der in der Ablaufverfolgung identifizierten Pakete eine Kopie des Manifests erstellt und die identifizierten Funktionen hinzugefügt.

Ausführliche Informationen finden Sie unter Get-ProfilingResults.

Der folgende Befehl analysiert die Ablaufverfolgungsdatei und gibt die Ergebnisse aus:

Get-ProfilingResults -EtlFilePaths trace.etl -ManifestPath TestApp-AppXManifest.xml

Screenshot eines PowerShell-Befehlsfensters, das das Get-ProfilingResults-Cmdlet ausführt

Neupacken der App

So packen Sie die Zielanwendung mit den neu identifizierten Funktionen erneut:

  1. Fügen Sie die neu identifizierten Funktionen in das Zielanwendungspaketmanifest ein (Get-ProfilingResults bearbeitet das Manifest direkt, wenn angegeben).
  2. Folgen Sie den Anweisungen in msix-packaging-tool, um die Zielanwendung mit den neuen Funktionen neu zu packen und neu zu installieren.

Hilfs-Cmdlets

Das Cmdlet Merge-ProfilingResults kann verwendet werden, um die Ausgabe aus mehreren Ausführungen von Get-ProfilingResults zusammenzuführen.

Interpretieren der Profilerstellungsausgabe

Die Ausgabe von Get-ProfilingResults besteht aus den folgenden Komponenten:

  1. Manifestformatierte Funktionen

    Wenn der Benutzer ein Manifest bereitstellt, das mit dem -ManifestPath-Switch bearbeitet werden soll und das Paket, zu dem das Manifest gehört, in der Eingabeablaufverfolgung identifiziert wird, bearbeitet Get-ProfilingResults die Manifestdatei direkt, um die in der Ablaufverfolgung für das Paket identifizierten Funktionen einzuschließen. Andernfalls gibt Get-ProfilingResults für jedes Paket, das in der Ablaufverfolgungsdatei identifiziert wurde, eine Datei mit dem Namen <package full name><manifest name>.xml aus, die das <Capabilities>-Element mit den in der Ablaufverfolgung für das entsprechende Paket identifizierten Funktionen enthält.

    Hinweis

    Es gibt zwei spezielle Arten von Funktionen, die Get-ProfilingResults identifizieren kann. Diese Ergebnisse werden mit XML-Kommentaren im Ausgabemanifest gekennzeichnet.

    • Datenschutzsensitive Funktionen: Diese Funktionen schützen datenschutzrelevante Ressourcen wie Kamera, Standort und Mikrofon. Diese Funktionen müssen deklariert werden, wenn das Anwendungspaket Zugriff auf diese Ressourcen benötigt. Die Funktionsdeklaration allein reicht jedoch möglicherweise nicht aus, um den Anwendungszugriff auf die datenschutzsensible Zielressource sicherzustellen. In den Datenschutzeinstellungen kann der Benutzer der Anwendung weiterhin Ressourcenzugriff gewähren oder verweigern.
    • Aufforderungsfunktion: Get-ProfilingResults gibt diese Funktion als „auskommentiert“ aus, wenn es feststellt, dass die Eingabeaufforderungsfunktion auf ein Anwendungspaket angewendet werden kann. Wenn sie im Paketmanifest deklariert ist, wird die Anwendung für die Fallbackaufforderung aktiviert. Benutzeraufforderungen werden jedes Mal ausgegeben, wenn die Anwendung ihren Zugriff auf eine eingabeaufforderungsfähige Ressource verweigert hat. Dadurch erhält der Benutzer die Möglichkeit, der Ressource explizit Zugriff zu gewähren oder zu verweigern. Fallback-Eingabeaufforderungen können intrusiv sein und die Sandbox schwächen, daher sollten +sie mit Vorsicht verwendet werden, vorzugsweise nur, wenn dies für kritische Anwendungsszenarien erforderlich ist.
  2. AccessAttemptRecords.csv

    Dies ist eine durch Kommas getrennte Datei mit Werten, die detaillierte Diagnoseinformationen über analysierte Ablaufverfolgungsereignisse und jeden fehlgeschlagenen Zugriffsversuch enthält, der für das Anwendungspaket protokolliert wurde.

  3. summary.txt

    Dies ist eine Zusammenfassung aller Ausführungen von Get-ProfilingResults. Jede Ausführung wird an diese Datei angefügt. -SummaryOutputPath kann verwendet werden, um diesen Dateipfad zu ändern.

    Die Zusammenfassung enthält die analysierten Eingaben, Zielanwendungspakete und ausführbare Dateien, identifizierte Funktionen, bearbeitete Manifestinhalte und eine zusammengefasste Liste aller Ressourcen, auf die das Anwendungspaket zuzugreifen versuchte, für die jedoch keine Funktionen identifiziert wurden.

Hinweis

Es ist möglich, dass die Zielanwendung beim Verpacken nicht auf diese Ressourcen zugreifen kann.

  1. README.txt

    Diese Datei enthält Informationen für alle Ausführungen von Get-ProfilingResults. Jedes Mal, wenn das Skript ausgeführt wird, wird die Ausführung an diese Datei angefügt.

    README enthält Informationen über die analysierten Eingaben, das Zielanwendungspaket, die Dateiausgabe und deren Pfade sowie eine Anleitung zur Problembehandlung.

Stapelablaufverfolgung

Das ACP-Archiv enthält eine Datei namens „ACP-StackTrace.wpaProfile“. Dies ist ein Profil für Windows Performance Analyzer (WPA). Es ermöglicht die Stapelablaufverfolgungsvisualisierung für die Protokolldatei der Ereignisablaufverfolgung, die von Stop-Profiling erfasst wird. Es schlüsselt Zugriffsversuche, ihr Ziel und den Stapel auf, der den Versuch ausgeführt hat. Dies ermöglicht ein umfassenderes Verständnis der Gründe, warum die Zielanwendung nicht auf bestimmte Ressourcen zugreifen kann.

Visualisieren von Zugriffsversuchsstapeln, die von Stop-Profiling in „trace.etl“ erfasst werden:

  1. Öffnen Sie die trace.etl-Datei in WPA.

  2. Konfigurieren Sie die WPA-Symbolpfade so, dass sie auf die Anwendungssymbole und den öffentlichen Microsoft-Symbolserver verweisen:

    Screenshot mit Windows Performance Analyzer-Ladesymbolen

  3. Laden Sie die Symbole.

  4. Wenden Sie das Profil in „ACP-StackTrace.wpaProfile“ an, um die Visualisierung des Zugriffsversuchsstapels anzuzeigen:

    Screenshot der Anwendung des Profils durch Windows Performance Analyzer

    Ein Screenshot, der zeigt, wie Windows Performance Analyzer die Visualisierung des Zugriffsversuchsstapels anzeigt

Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler

Start-Profiling

Stop-Profiling

Get-ProfilingResults

Merge-ProfilingResults

msix-packaging-tool

Funktionsdeklaration

Windows Performance Recorder

Windows Performance Analyzer

Installieren von PowerShell unter Windows