Поделиться через


com4:SurrogateServer

Регистрирует SurrogateServer с одной или несколькими регистрациями классов.

Иерархия элементов

<Пакет>

    <Приложения>

         <Приложение>

              <Расширения>

                   <com4:SurrogateServer>

Синтаксис

<com4:SurrogateServer
  CustomSurrogateExecutable = 'A string with a value between 1 and 256 characters in length that must end with ".exe" and cannot contain these characters: <, >, :, ", |, ?, or *.'
  DisplayName = 'A string with a value between 1 and 256 characters in length. This string is localizable.'
  LaunchAndActivationPermission = 'An [SDDL string](/windows/win32/secauthz/security-descriptor-string-format) value.'
  AppId = 'A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.'
  SystemSurrogate = 'A string with the following optional value: "PreviewHost".' >

  <!-- Child elements -->
  Class
  InProcessServerClassReference
  ClassReference

</com4:SurrogateServer>

Элементы и атрибуты

Атрибуты

Атрибут Описание Тип данных Обязательно Значение по умолчанию
CustomSurrogateExecutable Путь к объекту DllSurrogate в ключе AppId. Этот путь относится к корню пакета и должен ссылаться на файл в пакете. Это является мутально эксклюзивным с SystemSurrogate. Строка со значением от 1 до 256 символов, которая должна заканчиваться .exe на и не может содержать следующие символы: <, >, :, ", |, ?или *. Да
Отображаемое имя DisplayName — это локализуемая строка, соответствующая значению ключа AppID по умолчанию. Строка со значением от 1 до 256 символов в длину. Да
LaunchAndActivationPermission Строка SDDL, соответствующая значению LaunchPermission ключа AppID. Строковое значение SDDL. Да
Appid AppId, ссылающийся на связанный ключ AppId. GUID в формате xxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx. Да
SystemSurrogate Значение , соответствующее известным значениям из значения DllSurrogate ключа AppId. Этот параметр является мутально эксклюзивным с CustomSurrogateExecutable. Строка со следующим необязательным значением: PreviewHost. Да

Дочерние элементы

Дочерний элемент Описание
Класс Определяет регистрацию суррогатного класса сервера.
InProcessServerClassReference Указывает класс, с которым связан управляемый внутрипроцессный сервер, и задает сведения о регистрации.
ClassReference Указывает класс, с которым связан зарегистрированный внутрипроцессный сервер, и задает сведения о регистрации.

Родительские элементы

Родительский элемент Описание
Расширения Определяет одну или несколько точек расширяемости для приложения.

Комментарии

Ключ CLSID](/windows/win32/com/clsid-key-hklm) в макете реестра COM позволяет зарегистрировать CLSID для активации inproc (CLSCTX_INPROC_SERVER) и для активации outofproc на суррогатном сервере (CLSCTX_LOCAL_SERVER), указав:

  • Сведения об активации inproc в подразделе InprocServer32 .
  • Ссылка на ключ AppID через значение AppID ключа CLSID, где ключ AppID задает суррогат через значение DllSurrogate . Обратите внимание, что для активации outofproc на суррогатном сервере также используются сведения о регистрации сервера inproc, например путь dll и ThreadingModel. Дочерний элемент ClassReference элемента InProcessServer позволяет пакету, который регистрирует ИДЕНТИФИКАТОР CLSID для активации inproc и outofproc, чтобы указать сведения о сервере inproc один раз в качестве элемента InProcessServer/Class или InProcessServer/ClassReference и ссылаться на этот элемент из SurrogateServer, который поддерживает внекорпорабельную активацию CLSID. Эта структура для регистраций inproc/outofproc более точно отражает макет реестра COM, чем независимое указание пути dll и ThreadingModel в элементах InProcessServer/ClassReference и SurrogateServer/ClassReference.

При упаковке приложения с CLSID, зарегистрированным для активации outofproc на суррогатном сервере, обычно рекомендуется регистрировать в манифесте только суррогатный сервер. Например, суррогатные регистрации часто используются для поддержки точек расширения на основе COM, которые исторически поддерживали реализации inproc-сервера, но теперь рекомендуется использовать для изоляции некорректную регистрацию сервера. Для упакованных приложений существуют дополнительные функциональные ограничения для серверов inproc (дополнительные сведения см. в разделе In-ProcessServers ), в то время как любой пакет с ограниченной возможностью runFullTrust может успешно зарегистрировать суррогатный сервер, а для большинства точек расширения, регистрирующих суррогатный сервер, достаточно для включения функциональных возможностей расширения. Однако если упаковаированное приложение должно поддерживать непроковую активацию своих идентификаторов CLSID для обеспечения совместимости с другими приложениями, которые запрашивают активацию inproc (CLSCTX_INPROC_SERVER) и удовлетворяют требованиям для регистрации сервера inproc, оно может зарегистрировать CLSID для активации inproc и outofproc активации в суррогате. В этом случае рекомендуется указать сведения о сервере inproc в элементе InProcessServer/Class или InProcessServer/ClassReference и ссылаться на них из элемента SurrogateServer/InProcessServerClassReference .

Требования

Элемент Значение
Пространство имен http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (сборка 20348)