Разрешения для приложений
Некоторые приложения и игры в Microsoft Store предназначены для использования определенных аппаратных или программных возможностей вашего Windows устройства. Приложению для фотографий может потребоваться использовать камеру телефона, или руководство в ресторанах может использовать ваше местоположение, чтобы порекомендовать ближайшие места.
В Windows 11 выберите приложения, которые могут использовать определенную функцию, на странице Конфиденциальность. Выберите Начать > Параметры > конфиденциальности & безопасности. Выберите разрешение приложения (например, Расположение), а затем выберите, какие приложения могут получать к нему доступ.
На странице «Конфиденциальность» не будут указаны приложения с разрешением «Использовать все системные ресурсы». Параметры конфиденциальности нельзя применять для управления отдельными функциями, которые могут использовать эти приложения. Windows под эту категорию попадают классические приложения.
Разрешения для приложения можно посмотреть на странице продукта в Microsoft Store или в Интернете. Если вы не хотите, чтобы приложение использовало какие-либо перечисленные компоненты, вы можете не устанавливать его.
Примечание: Учащиеся, Windows 11 SE не смогут скачивать приложения из Microsoft Store. Приложениями управляет их ИТ-администратор. Дополнительные сведения
Вот дополнительные сведения о том, что те или иные разрешения позволяют приложению делать.
Доступ ко всем файлам, периферийным устройствам, приложениям, программам и реестру: Приложение может читать и писать во все ваши файлы (включая документы, изображения и музыку) и параметры реестра, что позволяет приложению вносить изменения в ваш компьютер и параметры. Приложение может без уведомления использовать все периферийные устройства, подключенные к устройству или являющиеся его частью (например, камеры, микрофоны или принтеры). Оно также может осуществлять доступ к вашему местоположению, а также использовать функции платформы, такие как журнал сведений о местоположении, диагностика приложений и другие, применение которых отклоняется большинством приложений из Store. Вы не можете управлять большинством разрешений для этого приложения в разделе «Параметры» > «Конфиденциальность». Обратите внимание, что несмотря на то что у приложения есть возможность получать доступ к этим ресурсам, фактически оно может этого не делать. Дополнительные сведения о том, что собирает и использует приложение, можно получить в политике конфиденциальности разработчика.
Сведения об учетной записи: Доступ к любым сведениям учетной записи.
Разрешить высоту: Позволяет приложению запускаться с прав администратора без запроса пользователя.
Диагностика приложений: Получите диагностические сведения о других запущенных приложениях.
Bluetooth: Активируйте и используйте Bluetooth подключения между устройством и другими устройствами.
Календарь: Доступ к календарям.
История вызовов: Доступ к истории телефонных звонков, сделанных на устройстве, в Skype или других приложениях телефонии.
Контакты: Доступ к своим контактам, людям или приложениям адресной книги.
Настраиваемые действия по установке: Установите дополнительное программное обеспечение.
Отправить по электронной почте: Доступ к электронной почте и сведениям об учетных записях электронной почты.
Распознавание лиц: Активируйте и используйте любое оборудование для распознавания лиц.
Файловая система: Доступ к файлам и папок, к которым у вас есть доступ, чтение и написание записей ко всем файлам (включая документы, изображения и музыку).
Сканер отпечатков пальцев: Активируйте и используйте любое оборудование сканера отпечатков пальцев.
Локальные системные службы. Установите на компьютер службу с максимальным количеством привилегий.
Расположение: Активируйте и используйте GPS или другие функции поиска местонахождения на своем устройстве. Доступ к данным о расположении в Карты и других приложениях.
Обмена сообщениями: Доступ к мгновенным сообщениям и сведениям об учетной записи.
Микрофон: Активируйте и используйте микрофон на своем устройстве.
Приложение Modifiable: Позволяет пользователю изменять приложение.
Движения: Активируйте и используйте на устройстве accelerometer или другую функцию sensing движения.
Библиотека музыки: Доступ к музыкальным файлам из библиотеки «Музыка» на устройстве.
Связь с полями near: Активируйте и используйте связи с полями (NFC) между устройством и другими устройствами.
Уведомления: Доступ к уведомлениям, которые находятся в центре уведомлений.
Упакованные службы. Установите службу на компьютере.
Пакет записи перенаправления shim:Позволяет приложению создавать, изменять и удалять файлы в папке установки приложения.
Библиотека рисунков: Доступ к файлам рисунков из библиотеки Рисунки на вашем устройстве.
Задачи: Доступ к списку задач Outlook и других приложениях для отслеживания задач.
Невиртуализированные ресурсы: Записи записей реестра и файлов, которые не очищаются при удалить.
Библиотека видео: Доступ к видеофайлам из библиотеки видео на устройстве.
Распознавание речи: Активируйте и используйте любое оборудование для распознавания речи.
Вебкамера: Активируйте и используйте камеру на устройстве.
Wifi: Активируйте и используйте подключения Wi-Fi между устройством, Интернетом и другими устройствами.
Проводные подключения: Активируйте и используйте проводные подключения, включая Ethernet, USB и серийные соединения между устройством, Интернетом и другими устройствами.
Некоторые приложения и игры в Microsoft Store предназначены для использования определенных аппаратных или программных возможностей вашего Windows устройства. Приложению для фотографий может потребоваться использовать камеру телефона, или руководство в ресторанах может использовать ваше местоположение, чтобы порекомендовать ближайшие места.
В Windows 10 используйте страницу «Конфиденциальность», чтобы выбрать, каким приложениям разрешено использовать определенный компонент. Выберите Пуск > Параметры > Конфиденциальность. Выберите приложение (например, «Календарь») и укажите, какие разрешения для приложения включить или отключить.
На странице «Конфиденциальность» не будут указаны приложения с разрешением «Использовать все системные ресурсы». Параметры конфиденциальности нельзя применять для управления отдельными функциями, которые могут использовать эти приложения. Windows под эту категорию попадают классические приложения.
Разрешения для приложения можно посмотреть на странице продукта в Microsoft Store или в Интернете. Если вы не хотите, чтобы приложение использовало какие-либо перечисленные компоненты, вы можете не устанавливать его.
Вот дополнительные сведения о том, что те или иные разрешения позволяют приложению делать.
Доступ ко всем файлам, периферийным устройствам, приложениям, программам и реестру: Приложение может читать и писать во все ваши файлы (включая документы, изображения и музыку) и параметры реестра, что позволяет приложению вносить изменения в ваш компьютер и параметры. Приложение может без уведомления использовать все периферийные устройства, подключенные к устройству или являющиеся его частью (например, камеры, микрофоны или принтеры). Оно также может осуществлять доступ к вашему местоположению, а также использовать функции платформы, такие как журнал сведений о местоположении, диагностика приложений и другие, применение которых отклоняется большинством приложений из Store. Вы не можете управлять большинством разрешений для этого приложения в разделе «Параметры» > «Конфиденциальность». Обратите внимание, что несмотря на то что у приложения есть возможность получать доступ к этим ресурсам, фактически оно может этого не делать. Дополнительные сведения о том, что собирает и использует приложение, можно получить в политике конфиденциальности разработчика.
Сведения об учетной записи: Доступ к любым сведениям учетной записи.
Разрешить высоту: Позволяет приложению запускаться с прав администратора без запроса пользователя.
Диагностика приложений: Получите диагностические сведения о других запущенных приложениях.
Bluetooth: Активируйте и используйте Bluetooth подключения между устройством и другими устройствами.
Календарь: Доступ к календарям.
История вызовов: Доступ к истории телефонных звонков, сделанных на устройстве, в Skype или других приложениях телефонии.
Контакты: Доступ к своим контактам, людям или приложениям адресной книги.
Настраиваемые действия по установке: Установите дополнительное программное обеспечение.
Отправить по электронной почте: Доступ к электронной почте и сведениям об учетных записях электронной почты.
Распознавание лиц: Активируйте и используйте любое оборудование для распознавания лиц.
Файловая система: Доступ к файлам и папок, к которым у вас есть доступ, чтение и написание записей ко всем файлам (включая документы, изображения и музыку).
Сканер отпечатков пальцев: Активируйте и используйте любое оборудование сканера отпечатков пальцев.
Локальные системные службы. Установите на компьютер службу с максимальным количеством привилегий.
Расположение: Активируйте и используйте GPS или другие функции поиска местонахождения на своем устройстве. Доступ к данным о расположении в Карты и других приложениях.
Обмена сообщениями: Доступ к мгновенным сообщениям и сведениям об учетной записи.
Микрофон: Активируйте и используйте микрофон на своем устройстве.
Приложение Modifiable: Позволяет пользователю изменять приложение.
Движения: Активируйте и используйте на устройстве accelerometer или другую функцию sensing движения.
Библиотека музыки: Доступ к музыкальным файлам из библиотеки «Музыка» на устройстве.
Связь с полями near: Активируйте и используйте связи с полями (NFC) между устройством и другими устройствами.
Уведомления: Доступ к уведомлениям, которые находятся в центре уведомлений.
Упакованные службы. Установите службу на компьютере.
Пакет записи перенаправления shim:Позволяет приложению создавать, изменять и удалять файлы в папке установки приложения.
Библиотека рисунков: Доступ к файлам рисунков из библиотеки Рисунки на вашем устройстве.
Задачи: Доступ к списку задач в Outlook и других приложениях для отслеживания задач.
Невиртуализированные ресурсы: Записи записей реестра и файлов, которые не очищаются при удалить.
Библиотека видео: Доступ к видеофайлам из библиотеки видео на устройстве.
Распознавание речи: Активируйте и используйте любое оборудование для распознавания речи.
Вебкамера: Активируйте и используйте камеру на устройстве.
Wifi: Активируйте и используйте подключения Wi-Fi между устройством, Интернетом и другими устройствами.
Проводные подключения: Активируйте и используйте проводные подключения, включая Ethernet, USB и серийные соединения между устройством, Интернетом и другими устройствами.
Интеграция приложений — Связывание и интеграция приложений в Windows 10
Большинство разработчиков создает и сопровождает на регулярной основе несколько приложений. По мере развития приложений пользователи часто требуют рабочих процессов, включающих несколько приложений, которые работают совместно друг с другом. Например, возможно, у вас есть приложение, управляющее складскими запасами товаров, и другое приложение, которое выполняет оформление заказов. Было бы идеально, если бы эти два приложения совместно работали, выполняя рабочий процесс покупки товаров.
Один из способов решить эту проблему — просто включить всю функциональность в одно приложение. По сути, этот подход часто встречается в приложениях настольного класса. Однако это рискованный путь. Очень быстро вы окажетесь с «раздутым» приложением, где большинство использует только какое-то подмножество функциональности. В этом случае разработчики должны управлять как сложностью UI, так и обновлениями для всего приложения. Еще хуже, что по мере дальнейшего усложнения UI пользователи, особенно мобильных устройств, начнут больше склоняться к другим вариантам. Фактически современная тенденция направлена на разложение приложений на индивидуальные части, чтобы пользователи могли устанавливать или использовать только то, что им нужно в дороге, не волнуясь о лишних мегабайтах.
Второй способ решения обозначенной проблемы — задействовать облако как средство коммуникации между приложениями. Это прекрасно работает, пока данных не становится больше определенного объема или пока у вас нет пользователей с ограниченными соединениями. Проблема начинает проявляться с жалоб наподобие «Я обновил свой статус вот здесь, а он не показывается в другом приложении!». Вдобавок я всегда нахожу несколько странным, что разработчики приложений должны прибегать к услугам облака для взаимодействия двух приложений на одном и том устройстве. Должен быть способ получше.
В этой статье я рассмотрю некоторые средства, предоставляемые Windows 10 для упрощения взаимодействия между приложениями. Это взаимодействие может принимать форму запуска одного приложения другим с какими-то данными или означать, что приложения просто обмениваются данными друг с другом без запуска дополнительных приложений. Средства Windows 10 применимы в обоих этих сценариях.
Подготовка приложения к созданию глубинных ссылок
Начнем с примера складского приложения, которое может показывать подробные сведения о товарах. Также добавим в смесь приложение продаж, способное отображать устойчивые тенденции о том, что продается и где, а также куда и какие товары нужно подвезти. Приложение продаж имеет UI для анализа данных «вглубь», позволяющий пользователям видеть подробные сведения об индивидуальных товарах. Конечно, большая часть подробных сведений о товарах находится в складском приложении. Рис. 1 демонстрирует сценарий, о котором я говорю.
Рис. 1. Приложение продаж имеет глубинные ссылки на складское приложение
Sales App | Приложение продаж |
Show Product Details | Отображение подробных сведений о товарах |
InventoryApp | Складское приложение |
В этом сценарии вы должны прежде всего сделать складское приложение доступным для запуска. Для этого вы добавляете объявление протокола в манифест пакета складского приложения (package.appxmanifest). Объявление протокола — это способ для складского приложения сообщить миру о том, что его можно запускать из других приложений. На рис. 2 показано, как выглядит это объявление. Заметьте, что я использую для протокола имя com.contoso.showproduct. Это хорошее соглашение по именованию для пользовательских протоколов, так как Contoso владеет доменом contoso.com. Вероятность того, что разработчик какого-то другого приложения случайно использует ту же пользовательскую схему, исключается.
Рис. 2. Объявление протокола
Вот XML, генерируемый объявлением протокола:
Затем нужно добавить некоторый код активации, чтобы складское приложение могло соответственно отреагировать, когда оно запускается по этому новому протоколу. Этот код должен находиться в классе Application (App.xaml.cs) складского приложения, потому что именно этому классу направляются все операции активации. Вы переопределяете метод OnActivated класса Application, чтобы реагировать на активацию протокола. На
Рис. 3. Обработка глубинной связи
protected override void OnActivated(IActivatedEventArgs args) < Frame rootFrame = CreateRootFrame(); if (args.Kind == ActivationKind.Protocol) < var protocolArgs = args as ProtocolActivatedEventArgs; rootFrame.Navigate(typeof(ProtocolActivationPage), protocolArgs.Uri); >else < rootFrame.Navigate(typeof(MainPage)); >// Гарантируем, что текущее окно активно Window.Current.Activate(); >
Вы проверяете вид входящего IActivatedEventArgs, чтобы понять, является ли это активацией протокола. Если да, вы приводите типы входящих аргументов к ProtocolActivatedEventArgs и отправляете входящий URI на страницу ProductDetails. Эта страница настраивается на разбор URI вроде com.contoso.showproduct:Details?ProductId=3748937 и отображает подробные сведения о соответствующем товаре. К этому моменту складское приложение готово к обработке входящих глубинных ссылок (deep links).
Последний шаг в этом сценарии — разрешить в приложении продаж поддержку глубинных ссылок на складское приложение. Это самая простая часть всего процесса. Приложение продаж использует метод Launcher.LaunchUriAsync для глубинной ссылки на складское приложение. Вот как мог бы выглядеть такой код:
Uri uri = new Uri("com.contoso.showproduct:?ProductId=3748937"); await Launcher.LaunchUriAsync(uri);
Обмен данными между приложениями
Существуют сценарии, где приложениям нужно обмениваться данными, но при этом не обязательно перенаправлять пользователя в другое приложение. Скажем, мое приложение продаж может отображать объемы продаж по регионам и даже детализировать информацию до уровня конкретных магазинов. Выводя эти данные по товарам, было бы полезно знать, сколько штук товара доступно в каком-либо магазине или регионе. Лучший источник этих данных — складское приложение, но в этом случае запуск складского приложения нарушил бы пользовательскую среду (UX) исходного приложения. Для такого рода сценариев как раз и предназначено расширение AppService (bit.ly/1JfcVkx).
Идея проста: складское приложение предоставляет «сервис», который может вызываться приложением продаж. Последнее использует этот сервис для запроса у складского приложения имеющихся у него данных. Соединение, установленное между приложение продаж и складским приложением, может поддерживаться открытым до тех пор, пока приложение продаж не будет приостановлено.
Создание сервиса складского приложения
Давайте рассмотрим, как складское приложение создает и публикует сервис, который оно намерено предоставлять. Сервисы приложений в основном специализируются на фоновых задачах. Поэтому, чтобы добавить сервис приложения, вы добавляете проект Windows Runtime Component (Universal Windows) в решение Visual Studio, содержащее складское приложение. Проекты Windows Runtime Component вы найдете в окне Add New Project в Visual Studio под Visual C# | Windows | Universal. Шаблоны этого проекта для других языков находятся по аналогичным путям.
В новый проект Windows Runtime Component добавьте новый класс, InventoryServiceTask. Сервисы приложений специализируются на фоновых задачах потому, что, как было показано ранее, этот код должен выполняться в фоне, не проявляясь в UI. Чтобы сообщить ОС, что InventoryServiceTask — фоновая задача, вы должны просто реализовать интерфейс IBackgroundTask. Метод Run интерфейса IBackgroundTask будет точкой входа для сервиса складского приложения. В нем вы указываете отсрочку (deferral), давая знать ОС, что эту задачу следует сохранять, пока она нужна клиенту (приложению продаж). Кроме того, вы подключаете обработчик специфичного для сервиса приложения события RequestReceived. Этот обработчик будет вызываться всякий раз, когда клиент отправляет запрос на обработку этому сервису. На рис. 4 показано, как выглядит код, инициализирующий сервис складского приложения.
Рис. 4. Инициализация сервиса складского приложения в методе Run
namespace Contoso.Inventory.Service < public sealed class InventoryServiceTask : IBackgroundTask < BackgroundTaskDeferral serviceDeferral; AppServiceConnection connection; public void Run(IBackgroundTaskInstance taskInstance) < // Указываем отсрочку, чтобы избежать // завершения работы сервиса serviceDeferral = taskInstance.GetDeferral(); taskInstance.Canceled += OnTaskCanceled; var details = taskInstance.TriggerDetails as AppServiceTriggerDetails; connection = details.AppServiceConnection; // Прослушиваем входящие запросы к сервису приложения connection.RequestReceived += OnRequestReceived; >> >
Теперь посмотрим на реализацию обработчика RequestReceived. И вновь вы указываете отсрочку, как только поступает запрос. Вы удаляете эту отсрочку по завершении обработки входящего запроса. Клиент и сервис приложения взаимодействуют, передавая структуру данных ValueSet. Каждая ValueSet — это словарь «ключ-значение», который может содержать простые типы вроде целых чисел, чисел с плавающей точкой, строк и байтовых массивов.
На рис. 5 показано, как сервис складского приложения обрабатывает входящие запросы. Он анализирует входящее сообщение на наличие команды, а затем отвечает, передавая правильный результат. В данном случае вы видите команду GetProductUnitCountForRegion, на которую сервис реагирует передачей количества штук товара и времени последнего обновления данных. Сервис мог бы прекрасно получать эти данные от веб-сервиса или просто извлекать их из автономного кеша. Прелесть в том, что клиенту (приложению продаж) не нужно знать, откуда берутся эти данные.
Рис. 5. Прием запросов к складскому приложению
async void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args) < // Получаем отсрочку, чтобы можно было использовать // ожидаемый (awaitable) API для ответа на сообщение var messageDeferral = args.GetDeferral(); try < var input = args.Request.Message; string command = input["Command"] as string; switch(command) < case "GetProductUnitCountForRegion": < var productId = (int)input["ProductId"]; var regionId = (int)input["RegionId"]; var inventoryData = GetInventoryData(productId, regionId); var result = new ValueSet(); result.Add("UnitCount", inventoryData.UnitCount); result.Add("LastUpdated", inventoryData.LastUpdated.ToString()); await args.Request.SendResponseAsync(result); >break; // Другие команды default: return; > > finally < // Завершаем отсрочку сообщения, чтобы платформа узнала, // что мы закончили обработку messageDeferral.Complete(); >> // Корректно обрабатываем отмену // фоновой задачи этого сервиса приложения private void OnTaskCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason) < if (serviceDeferral != null) < // Завершаем отсрочку сервиса serviceDeferral.Complete(); serviceDeferral = null; >>
На рис. 5 также приведена реализация обработчика отмены. Важно, чтобы сервис приложения корректно отказывался от отсрочки, когда запрашивается отмена. Отмена фоновой задачи сервиса приложения могла произойти либо из-за закрытия клиентом соединения с сервисом приложения, либо из-за исчерпания ресурсов в системе. В любом случае корректная отмена гарантирует, что отмена не будет выглядеть как крах платформы.
Прежде чем кто-либо сможет вызывать сервис складского приложения, вы должны опубликовать его и присвоить ему какую-либо конечную точку. Сначала добавьте ссылку на новый компонент Windows Runtime в проект складского приложения. Затем добавьте объявление сервиса в проекте этого приложения, как показано на рис. 6. В поле Entry point указывается полное имя класса InventoryServiceTask, а в поле Name — имя, которое вы будете использовать для идентификации конечной точки этого сервиса приложения. Для обращения к сервису клиенты будут использовать то же имя.
Рис. 6. Объявление сервиса приложения
Вот XML, генерируемый объявлением сервиса приложения:
Другая часть информации, необходимая клиенту для взаимодействия с сервисом складского приложения, — имя семейства пакетов складского приложения. Самый простой способ получить это значение — вызвать метод Windows.ApplicationModel.Package.Current.Id.FamilyName в складском приложении. Обычно я просто вывожу это значение в окно отладки и копирую его оттуда.
Вызов сервиса приложения
Теперь, когда сервис складского приложения готов к работе, его можно вызывать из приложения продаж. Чтобы вызвать этот сервис, клиент может задействовать AppServiceConnection API. Экземпляр класса AppServiceConnection требует имени конечной точки сервиса приложения и имени семейства пакетов, где находится сервис. Считайте эти два значения адресом сервиса приложения.
На рис. 7 приведен код, используемый приложением продаж для соединения с сервисом складского приложения. Заметьте, что свойству AppServiceConnection.AppServiceName было задано имя конечной точки, объявленное в манифесте пакета складского приложения. Кроме того, Package Family Name складского приложения было включено в свойство AppServiceConnection.PackageFamilyName. После этого вызовите метод AppServiceConnection.OpenAsync, чтобы открыть соединение. OpenAsync API возвращает код состояния по завершении этой операции, с помощью которого определяется, успешно ли установлено соединение.
Рис. 7. Вызов сервиса складского приложения
using (var connection = new AppServiceConnection()) < // Устанавливаем новое соединение с сервисом приложения connection.AppServiceName = "com.contoso.inventoryservice"; connection.PackageFamilyName = "Contoso.Inventory_876gvmnfevegr"; AppServiceConnectionStatus status = await connection.OpenAsync(); // Новое соединение успешно открыто if (status != AppServiceConnectionStatus.Success) < return; >// Задаем входные данные и посылаем сообщение сервису var inputs = new ValueSet(); inputs.Add("Command", "GetProductUnitCountForRegion"); inputs.Add("ProductId",productId); inputs.Add("RegionId", regionId); AppServiceResponse response = await connection.SendMessageAsync(inputs); // Если сервис успешно отвечает, отображаем результат if (response.Status == AppServiceResponseStatus.Success) < var unitCount = response.Message["UnitCount"] as string; var lastUpdated = response.Message["LastUpdated"] as string; // Отображаем значения, полученные от сервиса >>
После соединения клиент посылает сервису приложения набор значений в ValueSet, используя метод AppServiceConnection.SendMessageAsync. Заметьте, что свойство Command в ValueSet устанавливается в GetProductUnitCountForRegion. Это команда, распознаваемая сервисом. SendMessageAsync возвращает ответ, содержащий ValueSet, который был отправлен сервисом. Разбираем значения UnitCount и LastUpdated и выводим их. И это все, что требуется для взаимодействия с сервисом приложения. Вы помещаете AppServiceConnection в блок using. Это приводит к вызову метода Dispose в AppServiceConnection, как только блок using заканчивается. Вызов Dispose — способ для клиента сообщить, что он завершил взаимодействие с сервисом приложения и теперь соединение можно закрыть.
Постойте-ка, а использует ли Microsoft эти API?
Конечно, Microsoft использует эти API. Большинство приложений Microsoft, поставляемых вместе с Windows 10, на самом деле являются приложения Universal Windows Platform (UWP). К ним относятся такие программы, как Photos, Camera, Mail, Calendar, Groove Music и Store. Разработчики, которые писали эти приложения, использовали многие из рассмотренных здесь API для реализации интеграционных сценариев. Например, вы никогда не обращали внимания на ссылку Get music in Store в приложении Groove Music? Когда вы касаетесь или щелкаете эту ссылку, Groove Music использует Launcher.LaunchUriAsync API, чтобы перенаправить вас в приложение Store.
Другой яркий пример — приложение Settings. Когда вы заходите в Accounts | Your account и пытаетесь использовать камеру, чтобы сделать снимок для профиля, вызывается Launcher.LaunchUriForResultsAsync API, который запускает программу Camera. LaunchUriForResultsAsync — это специализированная форма LaunchUriAsync, более подробно описанная по ссылке aka.ms/launchforresults.
Большое количество программ также использует сервисы приложений для передачи информации в Cortana в реальном времени. Например, когда приложение пытается установить голосовые команды, на которые должна реагировать Cortana, на самом деле вызывается сервис приложения, предоставляемый Cortana.
Заключение
Windows 10 поставляется с мощными средствами, помогающими во взаимодействии между приложениями, выполняемыми на одном устройстве. Эти средства не накладывают никаких ограничений на то, что приложения могут передавать друг другу или какими данными они могут обмениваться. Так и задумано. Цель — позволить приложениям определять собственные контракты друг с другом и расширять функциональность других приложений. Это также дает возможность разработчикам разбивать свои приложения на меньшие части, которые легче сопровождать, обновлять и использовать. Это очень важно, потому что пользователи все чаще располагают несколькими устройствами и используют то устройство, которое, по их мнению, лучше подходит для конкретной задачи. Кроме того, все эти API универсальны, а значит, они могут работать на настольных компьютерах, лэптопах, планшетах, смартфонах, а вскоре и на Xbox, Surface Hub и HoloLens.
Арун Сингх (Arun Singh) — старший менеджер программ в группе Universal Windows Platform. Следите за его заметками в Twitter (@aruntalkstech) или читайте его блог на aruntalkstech.com.
Выражаю благодарность за рецензирование статью экспертам Гектору Барбере (Hector Barbera), Джиллу Бендеру (Jill Bender), Говарду Капуштайну (Howard Kapustein), Абдуле Хади Шейху (Abdul Hadi Sheikh), Стефану Уику (Stefan Wick) и Джону Уисуоллу (Jon Wiswall).
Как просмотреть исходящие соединения приложения в windows?
Приветствую.
Подскажите утилиту с графическим интерфейсом, в которой можно посмотреть все установленные соединения (ip-адреса, адреса доменов и т.д.) для конкретного процесса и всех остальных процессов, им порождённых?
Что-нибудь такое, чтобы оно было похоже на анализ сетевой активности (Network) в инструментах разработчика браузера Google Chrome.
Ситуация такая: имеется безобидное приложение, в которое встроен cef (браузер хром). После добавления в это приложение некоего плагина, появляются дополнительные процессы cef (видимо используя апи-приложения, плагин порождает новые процессы), которые время от времени ведут себя крайне подозрительно: выводят js-alert уведомления с сайтов казино. Нужно выявить что происходит в этих процессах, какие соединения и с чем они устанавливают.
- Вопрос задан более трёх лет назад
- 1150 просмотров
Общие сведения о соединителе частной сети Microsoft Entra
Подключение- это то, что делает Частный доступ Microsoft Entra и прокси приложения возможным. Они просты в использовании, развертывании и обслуживании. К тому же они очень производительны. В этой статье объясняется, что такое соединители, как они работают, и приводится несколько рекомендаций по оптимизации развертывания.
Что такое соединитель частной сети?
Подключение — это упрощенные агенты, которые находятся в частной сети и упрощают исходящее подключение к службам Частный доступ Microsoft Entra и прокси приложения. Подключение необходимо установить на сервере Windows Server с доступом к внутренним ресурсам. Соединители можно упорядочить в группы соединителей, при этом каждая группа обрабатывает трафик к определенным ресурсам. Дополнительные сведения о прокси-сервере приложения и схемном представлении архитектуры прокси приложения см. в статье «Использование прокси приложения Microsoft Entra для публикации локальных приложений для удаленных пользователей».
Чтобы узнать, как настроить соединитель частной сети Microsoft Entra, см. инструкции по настройке соединителей частной сети для Частный доступ Microsoft Entra.
Соединители частной сети — это упрощенные агенты, развернутые локально, которые упрощают исходящее подключение к службе прокси приложения в облаке. Соединители необходимо установить на сервере Windows с доступом к внутреннему приложению. Пользователи подключаются к облачной службе прокси приложения, которая направляет трафик к приложениям через соединители.
Настройка и регистрация между соединителем и службой прокси приложения выполняется следующим образом:
- ИТ-администратор открывает порты 80 и 443 для исходящего трафика и разрешает доступ к нескольким URL-адресам, необходимым соединителю, службе прокси приложения и идентификатору Microsoft Entra.
- Администратор входит в Центр администрирования Microsoft Entra и запускает исполняемый файл для установки соединителя на локальном сервере Windows.
- Соединитель начинает прослушивать службу прокси приложения.
- Администратор добавляет локальное приложение в идентификатор Microsoft Entra ИД и настраивает такие параметры, как URL-адреса пользователей, необходимых для подключения к приложениям.
Рекомендуется развернуть несколько соединителей для обеспечения избыточности и нужного масштаба. Соединители в сочетании со службой берут на себя все задачи по обеспечению высокого уровня доступности и могут динамически добавляться или удаляться. Когда поступает новый запрос, он перенаправляется на один из доступных соединителей. Выполняясь, соединитель остается активным, так как подключается к службе. Если соединитель временно недоступен, он перестает реагировать на трафик. Неиспользуемые соединители помечаются как неактивные и удаляются спустя 10 дней бездействия.
Подключение or также опрашивает сервер, чтобы узнать, есть ли более новая версия соединителя. Хотя вы можете выполнить обновление вручную, соединители будут обновляться автоматически, пока запущена служба обновления соединителя частной сети. Если клиент имеет несколько соединителей, автоматическое обновление производится для каждого соединителя поочередно в каждой группе, что позволяет избежать простоев в среде.
Вы можете отслеживать страницу журнала версий, чтобы оставаться в курсе последних обновлений.
Каждый соединитель частной сети назначается группе соединителей. Соединители в одной группе соединителей действуют как единый модуль в контексте обеспечения высокого уровня доступности и балансировки нагрузки. Вы можете создать новые группы, назначить соединители им в Центре администрирования Microsoft Entra, а затем назначить определенные соединители для обслуживания определенных приложений. Рекомендуется иметь по крайней мере два соединителя в каждой группе соединителей для обеспечения высокой доступности.
Группы соединителей удобны в тех случаях, когда требуется реализовать следующие сценарии:
- публикация приложений в разных регионах;
- сегментация или изоляции приложений;
- публикация веб-приложений, работающих в облаке или локальной среде.
Дополнительные сведения о выборе места установки соединителей и оптимизации сети см . в рекомендациях по топологии сети при использовании прокси приложения Microsoft Entra.
Обслуживание
Соединители и служба отвечают за выполнение задач, связанных с высоким уровнем доступности. Их можно добавлять или удалять динамически. Новые запросы направляются в один из доступных соединителей. Если соединитель временно недоступен, он перестает реагировать на трафик.
Соединители не поддерживают отслеживание состояния и не хранят данные конфигурации на компьютере. Единственные данные, которые они хранят, — это параметры подключения к службе и ее сертификат аутентификации. При подключении к службе соединители извлекают все необходимые данные конфигурации и обновляют их каждые несколько минут.
Подключение также опрашивает сервер, чтобы узнать, есть ли более новая версия соединителя. Если такая версия будет найдена, соединители обновятся.
Соединители можно отслеживать с компьютера, на котором они работают, с помощью журналов событий и счетчиков производительности. Дополнительные сведения см. в разделе «Мониторинг и проверка журналов» для локальной версии Microsoft Entra.
Вы также можете просмотреть их состояние в Центре администрирования Microsoft Entra. Для Частный доступ Microsoft Entra перейдите к глобальному безопасному доступу (предварительная версия), Подключение и выберите Подключение оры. Для прокси приложения перейдите к Identity, Applications, Enterprise applications и выберите приложение. На странице приложения выберите прокси приложения.
Вам не требуется вручную удалять неиспользуемые соединители. Выполняясь, соединитель остается активным, так как подключается к службе. Неиспользуемые соединители помечены как _inactive_ и удаляются через 10 дней бездействия. Если вы хотите удалить соединитель, то удалите с сервера службу соединителя и службу средства обновления. Перезапустите компьютер, чтобы полностью удалить службу.
Автоматические обновления
Идентификатор Microsoft Entra предоставляет автоматические обновления для всех развернутых соединителей. Если служба обновления соединителя частной сети запущена, соединители обновляются автоматически с помощью последнего основного выпуска соединителя. Если на сервере не отображается служба обновления Подключение or, необходимо переустановить соединитель для получения обновлений.
Если вы не хотите дожидаться, когда ваш соединитель обновится автоматически, вы можете выполнить обновление вручную. Перейдите на страницу скачивания соединителя на сервере, где находится соединитель, и выберите команду Скачать. Запустится обновление локального соединителя.
Если клиент имеет несколько соединителей, автоматическое обновление производится для каждого соединителя поочередно в каждой группе, что позволяет избежать простоев в среде.
Вы можете столкнуться с простоем при обновлении соединителя, если:
- У вас только один соединитель. Второй соединитель и группа соединителей рекомендуется избежать простоя и обеспечить более высокую доступность.
- Соединитель выполнял транзакцию в момент начала обновления. Хотя исходная транзакция утеряна, браузер должен автоматически повторить операцию. Вы также можете обновить страницу. При повторном запросе трафик направляется на резервный соединитель.
Сведения о ранее выпущенных версиях и изменениях, которые они включают, см. в журнале выпуска прокси-версий приложения.
Создание групп соединителей
Группы соединителей позволяют назначить определенные соединители для конкретных приложений. Вы можете объединить множество соединителей, а затем назначить каждому ресурсу или приложению группе.
Группы соединителей упрощают управление крупными развертываниями. Они также повышают задержку для клиентов, имеющих ресурсы и приложения, размещенные в разных регионах, так как можно создавать группы соединителей на основе расположения для обслуживания только локальных приложений.
Дополнительные сведения о группах соединителей см. в статье «Общие сведения о группах соединителей частной сети Microsoft Entra».
Планирование ресурсов
Запланируйте достаточную емкость между соединителями для обработки ожидаемого объема трафика. По крайней мере два соединителя в группе соединителей обеспечивают высокий уровень доступности и масштабирования. Но три соединителя являются оптимальными.
Таблица предоставляет объем и ожидаемую задержку для различных спецификаций компьютера. Данные основаны на ожидаемых транзакциях в секунду (TPS), а не от пользователя, так как шаблоны использования различаются и не могут использоваться для прогнозирования нагрузки. Существуют некоторые различия в зависимости от размера ответов и времени отклика серверного приложения — большие размеры ответов и более медленное время отклика приводят к снижению максимального значения TPS. Больше компьютеров распределяют нагрузку и предоставляют достаточно буфера. Дополнительная емкость обеспечивает высокую доступность и устойчивость.
Ядра | ОЗУ | Ожидаемая задержка (мс)-P99 | Макс. TPS |
---|---|---|---|
2 | 8 | 325 | 586 |
4 | 16 | 320 | 1150 |
8 | 32 | 270 | 1190 |
16 | 64 | 245 | 1200* |
* Компьютер использовал настраиваемый параметр для повышения некоторых ограничений подключения по умолчанию за пределами рекомендуемых параметров .NET. Рекомендуем запустить тест с параметрами по умолчанию, прежде чем обратиться в службу поддержки, чтобы изменить это ограничение для своего клиента.
В максимальном диапазоне TPS от 4, 8 до 16 основных компьютеров нет никакой разницы. Основное различие заключается в ожидаемой задержке.
В таблице основное внимание уделяется ожидаемой производительности соединителя на основе типа установленного компьютера. Это отличается от ограничений регулирования службы, см . ограничения и ограничения службы.
Безопасность и сеть
Подключение можно установить в любой точке сети, которая позволяет отправлять запросы в службу Частный доступ Microsoft Entra и прокси приложения. Важно, чтобы компьютер, на котором запущен соединитель, также имеет доступ к приложениям и ресурсам. Можно установить соединители в корпоративной сети или на виртуальной машине, работающей в облаке. Соединители могут работать в промежуточной подсети, также называемой демилитаризованной зоной (ДМЗ), но в этом нет необходимости, поскольку весь трафик является исходящим, сеть остается в безопасности.
Соединители отправляют только исходящие запросы. Исходящий трафик отправляется службе и опубликованным ресурсам и приложениям. Нет необходимости открывать входящие порты, так как после установления сеанса трафик передается в обе стороны. Вам также не нужно настраивать входящий доступ через брандмауэры.
Дополнительные сведения о настройке правил брандмауэра для исходящего трафика см. в статье Работа с имеющимися локальными прокси-серверами.
Производительность и масштабируемость
Масштабирование для Частный доступ Microsoft Entra и прокси-служб приложений является прозрачным, но масштабирование является фактором для соединителей. Для обработки пикового трафика необходимо иметь достаточное количество соединителей. Подключение доры являются без отслеживания состояния, а количество пользователей или сеансов не влияет на них. Но они зависят от количества запросов и объема полезных данных в этих запросах. При использовании стандартного веб-трафика средний компьютер может обрабатывать 2000 запросов в секунду. Этот показатель зависит от точных характеристик компьютера.
Производительность ЦП и сети определяет производительность соединителя. Производительность ЦП необходима для шифрования и расшифровки TLS, а сеть важна для быстрого подключения к приложениям и веб-службе.
Память, напротив, меньше всего важна для соединителей. Веб-служба выполняет большую часть операций обработки и отвечает за весь трафик, не прошедший аутентификацию. Все, что можно сделать в облаке, осуществляется в облаке.
Если соединители или компьютеры недоступны, трафик переходит к другому соединителю в группе. Несколько соединителей в группе соединителей обеспечивают устойчивость.
На производительность также влияет качество сетевого подключения между соединителями, которое определяется следующими факторами.
- Веб-служба: медленные или высокие задержки подключения к службе Microsoft Entra влияют на производительность соединителя. Для повышения производительности подключите организацию к Microsoft с помощью Express Route. В противном случае ваша сетевая команда гарантирует, что подключения к Корпорации Майкрософт обрабатываются максимально эффективно.
- Серверные приложения: в некоторых случаях между соединителем и внутренними ресурсами и приложениями, которые могут замедлить или предотвратить подключения, существуют дополнительные прокси-серверы. Чтобы устранить эту проблему, откройте браузер с сервера соединителя и попытайтесь получить доступ к приложению или ресурсу. Если вы запускаете соединители в облаке, но приложения находятся в локальной среде, это может быть не то, что ожидают ваши пользователи.
- Контроллеры домена. Если соединители выполняют единый вход (SSO) на основе ограниченного делегирования Kerberos, они устанавливают связь с контроллерами домена перед отправкой запроса на сервер. Соединители содержат кэш билетов Kerberos, но в среде с высокой нагрузкой скорость реагирования контроллеров домена может снизить производительность. Такая проблема наиболее характерна для ситуации, когда соединители выполняются в Azure, но взаимодействуют с контроллерами домена в локальной среде.
Дополнительные сведения о оптимизации сети см . в рекомендациях по топологии сети при использовании прокси приложения Microsoft Entra.
Присоединение к домену
Подключение можно запускать на компьютере, который не присоединен к домену. Но если вам нужен единый вход (SSO) в приложения, использующие Встроенную проверку подлинности Windows (IWA), компьютер должен быть присоединен к домену. В этом случае компьютеры соединителя должны быть присоединены к домену, который может выполнить ограниченное делегирование Kerberos от имени пользователей для опубликованных приложений.
Соединители также могут присоединяться к доменам в лесах с частичным доверием или к контроллерам домена только для чтения.
Развертывание соединителей в средах с усиленной защитой
Развертывание соединителей обычно не вызывает сложностей и не требует дополнительной настройки.
Но для некоторых редких сценариев есть определенные условия.
- Для исходящего трафика требуется открыть определенные порты. Дополнительные сведения см. в статье о настройке соединителей.
- Компьютеры, совместимые с FIPS, могут потребовать изменения конфигурации, чтобы разрешить процессам соединителя создавать и хранить сертификат.
- Исходящие прокси-серверы могут нарушить двухсторонняя проверка подлинности сертификата и привести к сбою связи.
Проверка подлинности соединителя
Чтобы предоставить доступ к защищенной службе, соединители должны пройти проверку подлинности в службе, а служба должна пройти проверку подлинности в соединителе. Такая аутентификация выполняется с использованием сертификатов клиента и сервера, когда соединители инициируют подключение. Таким образом имя пользователя и пароль администратора не хранятся на компьютере соединителя.
Используемые сертификаты относятся к службе. Они создаются во время первоначальной регистрации и автоматически обновляются каждые пару месяцев.
После первого успешного продления сертификата служба соединителя частной сети Microsoft Entra (сетевая служба) не имеет разрешения на удаление старого сертификата из локального хранилища компьютеров. Если срок действия сертификата истекает или не используется службой, его можно удалить безопасно.
Чтобы избежать проблем с продлением сертификата, убедитесь, что сетевое подключение от соединителя к документированных назначениям включено.
Если соединитель не подключен к службе в течение нескольких месяцев, его сертификаты могут быть устаревшими. В этом случае следует удалить соединитель и установить его заново, чтобы запустить процесс регистрации. Вы можете выполнить следующие команды PowerShell:
Import-module MicrosoftEntraPrivateNetworkConnectorPSModule Register-MicrosoftEntraPrivateNetworkConnector -EnvironmentName "AzureCloud"
Для государственных организаций используйте -EnvironmentName «AzureUSGovernment» . Дополнительные сведения см. в разделе «Агент установки» для облака Azure для государственных организаций.
Сведения о проверке сертификата и устранении неполадок см. в статье «Проверка компонентов компьютера и серверной части» для сертификата доверия прокси приложения.
Внутренняя логика
Подключение оры устанавливаются на Windows Server, поэтому они имеют большую часть средств управления, включая журналы событий Windows и счетчики производительности Windows.
Для соединителей настроен журнал Администратор и журнал Сеанс. В журнале Администратор регистрируются основные события и соответствующие ошибки. В журнале Сеанс содержатся все транзакции и подробные сведения об их обработке.
Чтобы просмотреть журналы, откройте Просмотр событий и перейдите в журналы>приложений и служб Microsoft> Entra private network> Подключение or. Чтобы сделать журнал Сеанс видимым, в меню Просмотр выберите Показать журналы аналитики и отладки. Журнал сеансов обычно используется для устранения неполадок и по умолчанию отключен. Включите его, чтобы начать сбор событий, и отключите, когда он больше не требуется.
Состояние службы можно проверить в окне «Служба». Соединитель состоит из двух служб Windows: собственно соединитель и служба обновления. Они должны работать постоянно.
Неактивные соединители
Распространенная проблема заключается в том, что соединители отображаются как неактивные в группе соединителей. Брандмауэр блокирует необходимые порты — это распространенная причина неактивных соединителей.
Условия использования
Использование Частный доступ Microsoft Entra и Интернет-доступ Microsoft Entra предварительных версий и функций регулируется условиями предварительной версии веб-службы соглашений, в соответствии с которыми вы получили услуги. Предварительные версии могут быть подвержены снижению или другим обязательствам по обеспечению безопасности, соответствия требованиям и конфиденциальности, как описано далее в условиях универсального лицензионного соглашения для веб-служб и надстройки защиты данных Майкрософт (DPA) и других уведомлениях, предоставляемых предварительной версией.
Следующие шаги
- Общие сведения о группах соединителей частной сети Microsoft Entra
- Работа с имеющимися локальными прокси-серверами
- Устранение неполадок прокси приложения и соединителя
- Как автоматически установить соединитель частной сети Microsoft Entra