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:
Stellen Sie sicher, dass Ihr Benutzerkonto über Administratorrechte für das Windows-Zielsystem verfügt.
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.
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.
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
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.
Befolgen Sie die Anweisungen für msix-packaging-tool, um die Anwendung zu verpacken und auf dem Zielsystem zu installieren.
Rufen Sie das Zielanwendungspaketmanifest (empfohlen) und/oder den vollständigen Namen des Zielanwendungspakets ab.
(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.
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*'}
(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
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
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
Neupacken der App
So packen Sie die Zielanwendung mit den neu identifizierten Funktionen erneut:
- Fügen Sie die neu identifizierten Funktionen in das Zielanwendungspaketmanifest ein (Get-ProfilingResults bearbeitet das Manifest direkt, wenn angegeben).
- 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:
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.
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.
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.
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:
Öffnen Sie die trace.etl-Datei in WPA.
Konfigurieren Sie die WPA-Symbolpfade so, dass sie auf die Anwendungssymbole und den öffentlichen Microsoft-Symbolserver verweisen:
Laden Sie die Symbole.
Wenden Sie das Profil in „ACP-StackTrace.wpaProfile“ an, um die Visualisierung des Zugriffsversuchsstapels anzuzeigen:
Zugehörige Themen
Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler