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 в формате xxxx-xxxx-xxxx-xxxx-xxxx-xxxx. Да
SystemSurrogate Значение, соответствующее известным значениям из значения DllSurrogate ключа AppId. Это является мутантно эксклюзивным с CustomSurrogateExecutable. Строка со следующим необязательным значением: PreviewHost. Да

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

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

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

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

Remarks

Ключ 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, также используются в активации outofproc. Дочерний элемент 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 в элементе InProcessServer/Class или InProcessServer/ClassReference и ссылаться на них из элемента SurrogateServer/InProcessServerClassReference .

Требования

Значение
Пространство имен http://schemas.microsoft.com/appx/manifest/com/windows10/4