Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
В этом разделе описаны различные способы взаимодействия между приложениями универсальной платформы Windows (UWP) и приложениями Win32.
Службы приложений
Службы приложений позволяют приложениям предоставлять службы, принимаюющие и возвращающие пакеты свойств примитивов (ValueSet) в фоновом режиме. Расширенные объекты можно передавать, если они сериализованные.
Службы приложений могут выполняться либо вне процесса как фоновая задача, либо в процессе в приложении, работающем в переднем плане.
Службы приложений лучше всего использовать для совместного использования небольших объемов данных, где не требуется задержка, близкая к реальному времени.
КОМ
COM — это распределенная объектно-ориентированная система для создания двоичных компонентов программного обеспечения, которые могут общаться и взаимодействовать. Разработчик использует COM для создания повторно используемых компонентов программного обеспечения и уровней автоматизации для приложения. Компоненты COM могут находиться в процессе или вне процесса, и они могут взаимодействовать с помощью клиентской и серверной модели. Внепроцессные COM-серверы уже давно используются в качестве средства для обмена данными между объектами.
Упакованные приложения с возможностью runFullTrust могут регистрировать внепроцессные серверы COM для IPC, используя манифест пакета . Это называется упакованным COM.
Файловая система
Широкий доступ к файловой системе
Упакованные приложения могут выполнять IPC с помощью широкой файловой системы, объявляя возможность broadFileSystemAccess ограниченной. Эта возможность предоставляет API-интерфейсы Windows.Storage и xxxFromApp API Win32 доступ к широкой файловой системе.
По умолчанию IPC через файловую систему для упакованных приложений ограничен другими механизмами, описанными в этом разделе.
PublisherCacheFolder
PublisherCacheFolder позволяет упакованным приложениям объявлять папки в манифесте, к которым можно предоставить общий доступ другим пакетам того же издателя.
Общая папка хранилища имеет следующие требования и ограничения:
- Данные в общей папке хранилища не резервируются или перемещаются.
- Пользователь может очистить содержимое общей папки хранилища.
- Общую папку хранилища нельзя использовать для совместного использования данных между приложениями из разных издателей.
- Вы не можете использовать общую папку хранилища для совместного использования данных между разными пользователями.
- В общей папке хранилища нет управления версиями.
Если вы публикуете несколько приложений и ищете простой механизм для обмена данными между ними, то PublisherCacheFolder — это простой вариант на основе файловой системы.
Управляющий хранилищем с общим доступом
SharedAccessStorageManager используется в сочетании со службами приложений, активациями протокола (например, LaunchUriForResultsAsync) и т. д., чтобы предоставить общий доступ к StorageFiles через токены.
FullTrustProcessLauncher
Благодаря возможности runFullTrust упакованные приложения могут запускать процессы полного доверия в одном пакете.
В случаях, когда ограничения пакетов становятся бременем или отсутствуют подходящие варианты IPC, приложение может использовать процесс полного доверия как посредника для взаимодействия с системой. Затем оно может взаимодействовать с этим процессом полного доверия через службы приложений или другой поддерживаемый механизм IPC.
LaunchUriForResultsAsync
LaunchUriForResultsAsync используется для простого обмена данными (ValueSet) с другими упакованными приложениями, реализующими контракт активации ProtocolForResults . В отличие от служб приложений, которые обычно выполняются в фоновом режиме, целевое приложение запускается на переднем плане.
Файлы можно совместно использовать, передав маркеры SharedStorageAccessManager в приложение через ValueSet.
Обратная петля
Loopback — это процесс взаимодействия с сетевым сервером, прослушивающим localhost (адрес обратного цикла).
Для обеспечения безопасности и сетевой изоляции локальные соединения для IPC по умолчанию блокируются для упакованных приложений. Можно включить подключения обратного цикла между доверенными упакованными приложениями, используя возможности и и свойства манифеста .
- Все упакованные приложения, участвующие в возвратных соединениях, должны объявить возможность
privateNetworkClientServerв своих манифестах пакетов . - Два упакованных приложения могут взаимодействовать через loopback, объявив LoopbackAccessRules в манифестах пакета.
- Каждое приложение должно перечислить другое в LoopbackAccessRules. Клиент объявляет правило «out» для сервера, а сервер объявляет правила «in» для поддерживаемых клиентов.
Замечание
Имя семейства пакетов, необходимое для идентификации приложения в этих правилах, можно найти с помощью редактора манифеста пакета в Visual Studio во время разработки, через Центр Партнеров для приложений, опубликованных в Microsoft Store, или с помощью команды PowerShell Get-AppxPackage для уже установленных приложений.
Непакованные приложения и службы не имеют удостоверения пакета, поэтому их нельзя объявить в LoopbackAccessRules. Вы можете настроить упакованное приложение для подключения через loopback с распакованными приложениями и службами с помощью CheckNetIsolation.exe, однако это возможно только для сценариев установки вне магазина или отладки, где у вас есть локальный доступ к компьютеру и права администратора.
- Все упакованные приложения, участвующие в обратных соединениях, должны объявить возможность
privateNetworkClientServerв своих манифестах пакетов . - Если упакованное приложение подключается к неупакованному приложению или службе, выполните команду
CheckNetIsolation.exe LoopbackExempt -a -n=<PACKAGEFAMILYNAME>, чтобы добавить исключение обратного соединения для упакованного приложения. - Если неупакованное приложение или служба подключается к упакованному приложению, запустите
CheckNetIsolation.exe LoopbackExempt -is -n=<PACKAGEFAMILYNAME>, чтобы разрешить упакованному приложению получать входящие подключения с обратной связью.- CheckNetIsolation.exe должен выполняться непрерывно, пока упакованое приложение прослушивает подключения.
- Флаг
-isпоявился в Windows 10 версии 1607 (10.0; Сборка 14393).
Замечание
Имя семейства пакетов, необходимое для флага -nCheckNetIsolation.exe, можно найти в редакторе манифеста пакетов в Visual Studio во время разработки, в Центре партнеров для приложений, опубликованных в Microsoft Store, или с помощью команды Get-AppxPackage в PowerShell для уже установленных приложений.
CheckNetIsolation.exe также полезно для отладки проблем сетевой изоляции.
Трубы
Каналы обеспечивают простой обмен информацией между сервером канала и одним или несколькими клиентами канала.
Анонимные каналы и именованные каналы поддерживаются со следующими ограничениями:
- По умолчанию именованные каналы в упакованных приложениях поддерживаются только между процессами в одном пакете, если процесс не является полным доверием.
- Именованные каналы можно совместно использовать между пакетами, следуя рекомендациям по совместному использованию именованных объектов.
- Именованные каналы (в упакованных и распакованных приложениях) должны использовать синтаксис
\\.\pipe\LOCAL\для имени канала.
Реестр
Использование реестра для IPC обычно не рекомендуется, но поддерживается для существующего кода. Упакованные приложения могут получить доступ только к разделам реестра, к которым у них есть разрешение на доступ.
Обычно упакованные классические приложения (см. создание пакета MSIX из кода) используют виртуализацию реестра, так что глобальные записи реестра сводятся к частному кусту в пакете MSIX. Это обеспечивает совместимость исходного кода при минимизации влияния глобального реестра и может использоваться для IPC между процессами в одном пакете. Если вы должны использовать реестр, предпочтительно пользоваться этой моделью, а не манипулировать глобальным реестром.
RPC
RPC можно использовать для подключения упакованного приложения к конечной точке RPC Win32, если упакованное приложение имеет правильные возможности для сопоставления списков контроля доступа в конечной точке RPC.
Пользовательские возможности позволяют изготовителям оборудования и IHV определять произвольные возможности, ACL конечных точек RPC с ними, а затем предоставить эти возможности авторизованным клиентским приложениям. Полный пример приложения см. в примере CustomCapability .
Конечные точки RPC также могут включаться в список контроля доступа для определенных пакетированных приложений, чтобы ограничить доступ к конечной точке только для этих приложений, без необходимости управления пользовательскими возможностями. Для получения идентификатора безопасности (SID) из имени семейства пакетов можно использовать API DeriveAppContainerSidFromAppContainerName, а затем назначить права доступа для конечной точки RPC с использованием этого идентификатора безопасности, как показано в примере CustomCapability.
Общая память
Сопоставление файлов можно использовать для совместного использования файла или памяти между двумя или несколькими процессами со следующими ограничениями:
- По умолчанию сопоставления файлов в упакованных приложениях поддерживаются только между процессами в одном пакете, если только процесс не обладает полным доверием.
- Сопоставления файлов можно совместно использовать в пакетах, следуя рекомендациям по совместному использованию именованных объектов.
Рекомендуется использовать общую память для эффективного совместного использования и управления большими объемами данных.