Профилировщик возможностей приложения (ACP)
Упакованные приложения могут потребоваться для доступа к ресурсам за пределами песочницы. Примерами таких ресурсов являются файлы пользователей, рисунки, элементы реестра, камера, расположение и микрофон, среди прочего. Объявление возможностей позволяет изолированным приложениям получать доступ к некоторым из этих ресурсов. Объявления выполняются в манифесте пакета изолированного приложения. Дополнительные сведения см. в msix-packaging-tool.
Профилировщик возможностей приложений — это набор средств, которые помогают определить, какие возможности могут быть объявлены пакетом приложения, поэтому он предоставляет доступ к ресурсу, которому он нужен. Кроме того, он предоставляет полезные диагностические сведения о неудачных попытках доступа пакетом приложения.
Внимание
Эта функция доступна в предварительной версии: некоторые сведения относятся к предварительному продукту, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Подготовка целевой системы для профилирования
Для настройки целевой системы для профилирования необходимо выполнить следующие действия.
Убедитесь, что у учетной записи пользователя есть права администратора для целевой системы Windows.
Включите режим разработчика в целевой системе. Этот параметр можно найти в параметрах Windows | Конфиденциальность и безопасность | Для разработчиков. Дополнительные сведения см. в статье "Включение устройства для разработки ".
Установите PowerShell 7.3 или более поздней версии. Инструкции по установке в Windows см. в разделе "Установка PowerShell в Windows ".
Это необходимо для совместимости модуля Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler .
Установите средство записи производительности Windows (WPR), если оно еще не установлено и добавьте его в PATH.
Инструкции см. в записи производительности Windows.
Get-Command wpr
Скачайте архив профилировщика возможностей приложения и извлеките его в удобный путь.
Архив профилировщика возможностей приложения можно скачать из ресурсов выпуска этого проекта.
Следуйте инструкциям по msix-package-tool, чтобы упаковать приложение и установить его в целевой системе.
Получите манифест пакета целевого приложения (рекомендуется) и (или) полное имя целевого пакета приложения.
(Рекомендуется) Получите манифест пакета целевого приложения. Самый простой способ сделать это — открыть его с помощью средства упаковки MSIX и сохранить копию манифеста в удобном пути.
Получите полное имя пакета приложения, выполнив следующую команду в PowerShell:
Get-AppxPackage | where-object {$_.name -like '*Test-AppSilo*'}
(Необязательно) Установите Анализатор производительности Windows. Инструкции см. в Анализатор производительности Windows. Это не обязательно для профилирования, но может оказаться полезным для визуализации некоторых данных, захваченных и выходных данных ACP.
Импорт модуля PowerShell
Сведения о модуле см. здесь: Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler.
Выполните следующую команду в PowerShell с правами администратора, чтобы импортировать модуль:
Import-Module .\Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler.dll
Примечание.
Модуль Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler.dll находится в папке ACP, извлеченной из архива на шаге 5 целевой системы для профилирования выше.
Начало профилирования
Командлет Start-Profiling принимает путь к манифесту пакета целевого приложения или полному имени пакета приложения.
Start-Profiling инструментирует целевой пакет приложения для ведения журнала трассировки и включает поставщик ведения журнала трассировки для попыток доступа, сделанных целевым пакетом приложения. Дополнительные сведения см. в статье "Начало профилирования ".
Выполните следующую команду в PowerShell с правами администратора, чтобы начать профилирование:
Start-Profiling -ManifestPath TestApp-AppXManifest.xml
Запуск сценариев приложения
На этом шаге важно, чтобы все критически важные сценарии приложений выполнялись. Результаты профилирования являются исчерпывающими, как и в сценариях, выполняемых на этом шаге. Чем больше сценариев приложения выполняется, тем больше и более полный объем данных, захваченных сеансом ведения журнала трассировки, запущенным выше.
Остановка профилирования
Командлет Stop-Profiling останавливает сеанс ведения журнала трассировки доступа, который был запущен и удаляет инструментирование для всех пакетов приложений, которые были инструментированы для ведения журнала трассировки.
Stop-Profiling принимает необязательный параметр пути трассировки, который управляет путем, используемым для выходного файла журнала трассировки событий (etl). По умолчанию: <current_directory>\trace.etl
. Дополнительные сведения см. в статье "Остановка профилирования ".
Выполните следующую команду в PowerShell с правами администратора, чтобы остановить профилирование:
Stop-Profiling
Получение результатов профилирования
Командлет Get-ProfilingResults анализирует файл трассировки, полученный из описанных выше шагов, и находит возможности, необходимые для пакетов приложений, определенных в трассировке. Он выводит возможности и сведения для каждого пакета приложения, определенного в трассировке, если только фильтры не были указаны в определенном пакете.
Get-ProfilingResults принимает путь к файлу трассировки для анализа. Если путь не указан, Get-ProfilingResults попытается вызвать Stop-Profiling , чтобы получить трассировку для синтаксического анализа.
Get-ProfilingResults при необходимости получает путь к манифесту целевого приложения. Если данные в трассировке синтаксического анализа могут быть связаны с манифестом пакета целевого приложения, файл редактируется непосредственно с помощью выходных возможностей. В противном случае копия манифеста создается для каждого пакета, определенного в трассировке, добавляя определенные возможности.
Дополнительные сведения см. в разделе Get-ProfilingResults .
Следующая команда анализирует файл трассировки и выводит результаты:
Get-ProfilingResults -EtlFilePaths trace.etl -ManifestPath TestApp-AppXManifest.xml
Перепаковка приложения
Чтобы перепаковать целевое приложение с новыми возможностями:
- Включите новые возможности в манифест пакета целевого приложения (Get-ProfilingResults будет изменять манифест непосредственно при условии предоставления).
- Следуйте инструкциям в средстве msix-packaging-tool , чтобы перепаковать целевое приложение с новыми возможностями и переустановить его.
Вспомогательные командлеты
Командлет Merge-ProfilingResults можно использовать для объединения выходных данных из нескольких запусков Get-ProfilingResults.
Интерпретация выходных данных профилирования
Выходные данные Get-ProfilingResults состоят из следующих элементов:
Возможности форматирования манифеста
Если пользователь предоставляет манифест для редактирования с
-ManifestPath
помощью коммутатора и пакета, к которому принадлежит манифест, определяется в входной трассировке, Get-ProfilingResults изменит файл манифеста непосредственно, чтобы включить возможности, определенные в трассировке пакета. В противном случае для каждого пакета, определенного в файле трассировки, Get-ProfilingResults выводит файл с именем<package full name><manifest name>.xml
, содержащий<Capabilities>
элемент с возможностями, указанными в трассировке соответствующего пакета.Примечание.
Существует два специальных типа возможностей, которые могут определять Get-ProfilingResults . Эти результаты помечаются с xml-комментариями в выходном манифесте.
- Возможности конфиденциальности: эти возможности защищают конфиденциальные ресурсы конфиденциальности, такие как камера, расположение и микрофон. Эти возможности должны быть объявлены, если пакет приложения требует доступа к этим ресурсам. Однако объявление возможностей может быть недостаточно для обеспечения доступа приложений к целевому ресурсу с учетом конфиденциальности. В параметрах конфиденциальности пользователь по-прежнему может предоставить или запретить доступ к ресурсу приложения.
- Возможность запроса: Get-ProfilingResults выводит эту возможность в форме "закомментировано", когда она определяет, что возможность запроса может применяться к пакету приложения. Если этот манифест объявлен в манифесте пакета, приложение будет предложено откатить запрос. Запросы пользователей будут выдаваться каждый раз, когда приложение имеет доступ к запросу соответствующего ресурса. Это дает пользователю возможность явно предоставить или запретить доступ к ресурсу. Резервный запрос может быть навязчивым и ослаблять песочницу, поэтому его следует использовать с осторожностью, желательно только при необходимости для критических сценариев приложений.
AccessAttemptRecords.csv
Это файл значений, разделенный запятыми, содержащий подробные диагностические сведения о событиях синтаксического анализа трассировки и каждой неудачной попытке доступа, зарегистрированной для пакета приложения.
summary.txt
Это сводка по всем запускам Get-ProfilingResults. Каждый запуск добавляется к этому файлу.
-SummaryOutputPath
можно использовать для изменения этого пути к файлу.Сводка содержит синтаксический анализ входных данных, пакеты целевых приложений и исполняемые файлы, определенные возможности, измененное содержимое манифеста и сводный список всех ресурсов, к которым пакет приложения пытался получить доступ, но для которого не были определены возможности.
Примечание.
Возможно, целевое приложение не сможет получить доступ к этим ресурсам при упаковке.
README.txt
Этот файл содержит сведения обо всех запусках Get-ProfilingResults. При каждом запуске скрипта он добавляется к этому файлу.
README предоставляет сведения о входном анализе, пакете целевого приложения, выходных данных файлов и их путях, а также руководстве по устранению неполадок.
Трассировка стека
Архив ACP содержит файл с именем ACP-StackTrace.wpaProfile. Это профиль для Windows Анализатор производительности (WPA). Он включает визуализацию трассировки стека для файла журнала трассировки событий, захваченного Stop-Profiling. Он разбивает попытки доступа, их целевой объект и стек, выдаваемый попыткой. Это обеспечивает более полное представление о причинах, по которым целевое приложение не может получить доступ к определенным ресурсам.
Чтобы визуализировать стеки попыток доступа, захваченные stop-profiling в trace.etl:
Откройте файл trace.etl в WPA.
Настройте пути символов WPA, чтобы указать на символы приложения и общедоступный сервер символов Майкрософт:
Загрузите символы.
Примените профиль в ACP-StackTrace.wpaProfile для просмотра визуализации стека попыток доступа:
См. также
Microsoft.Windows.Win32Isolation.ApplicationCapabilityProfiler