Share via


com4:SurrogateServer

Registra um SurrogateServer com um ou muitos registros de classe.

Hierarquia de elementos

<Pacote>

    <Aplicativos>

         <Aplicativo>

              <Extensões>

                   <com4:SurrogateServer>

Syntax

<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>

Atributos e elementos

Atributos

Atributo Descrição Tipo de dados Obrigatório Valor padrão
CustomSurrogateExecutable Um caminho para o DllSurrogate na chave AppId. Esse caminho é relativo à raiz do pacote e deve referenciar um arquivo no pacote. Isso é mututally exclusivo com SystemSurrogate. Uma cadeia de caracteres com um valor entre 1 e 256 caracteres de comprimento que deve terminar com .exe e não pode conter estes caracteres: <, >, :, ", |, ?ou *. Yes
DisplayName DisplayName é uma cadeia de caracteres localizável correspondente ao valor de chave appID padrão. Uma cadeia de caracteres com um valor entre 1 e 256 caracteres de comprimento. Yes
LaunchAndActivationPermission Uma cadeia de caracteres SDDL que corresponde ao valor LaunchPermission da chave AppID. Um valor de cadeia de caracteres SDDL . Yes
AppId O AppId que faz referência à chave AppId associada. Um GUID no formato xxxxxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxxx. Yes
SystemSurrogate Um valor que corresponde a valores conhecidos do valor DllSurrogate da chave AppId. Isso é mututally exclusivo com CustomSurrogateExecutable. Uma cadeia de caracteres com o seguinte valor opcional: "PreviewHost". Yes

Elementos filho

Elemento filho Descrição
Classe Define um registro de classe de servidor substituto.
InProcessServerClassReference Especifica a classe com a qual o servidor gerenciado em processo está associado e define os detalhes do registro.
ClassReference Especifica a classe com a qual o servidor registrado em processo está associado e define os detalhes do registro.

Elementos pai

Elemento pai Descrição
Extensões Define um ou mais pontos de extensibilidade para o aplicativo.

Comentários

A chave CLSID](/windows/win32/com/clsid-key-hklm) no layout do Registro COM permite que um CLSID seja registrado para ativação inproc (CLSCTX_INPROC_SERVER) e para ativação outofproc em um servidor alternativo (CLSCTX_LOCAL_SERVER) especificando:

  • Detalhes de ativação inproc em uma subchave InprocServer32 .
  • Uma referência a uma chave AppID por meio do valor AppID da chave CLSID, em que a chave AppID especifica um substituto por meio do valor DllSurrogate . Observe que, para ativação outofproc em um servidor substituto, os detalhes de registro do servidor inproc, por exemplo, dll path e ThreadingModel, também são usados na ativação outofproc. O filho ClassReference do elemento InProcessServer habilita um pacote que registra um CLSID para ativação inproc e outofproc para especificar os detalhes do servidor inproc uma vez, como um elemento InProcessServer/Class ou InProcessServer/ClassReference e referenciar esse elemento do SurrogateServer que dá suporte à ativação outofproc do CLSID. Essa estrutura para os registros inproc/outofproc reflete mais de perto o layout do registro COM do que especificar independentemente o caminho dll e ThreadingModel nos elementos InProcessServer/ClassReference e SurrogateServer/ClassReference.

Ao empacotar um aplicativo com um CLSID registrado para ativação outofproc em um servidor substituto, geralmente é recomendável que apenas o servidor substituto seja registrado no manifesto. Por exemplo, registros substitutos geralmente são usados para dar suporte a pontos de extensão baseados em COM que historicamente habilitaram implementações de servidor inproc, mas que agora recomendam um registro de servidor outofproc como uma prática recomendada para isolamento. Para aplicativos empacotados, há limitações funcionais adicionais para servidores inproc (consulte In-ProcessServers para obter detalhes), enquanto qualquer pacote com a funcionalidade restrita runFullTrust pode registrar com êxito um servidor substituto e, para a maioria dos pontos de extensão que registram um servidor substituto, é suficiente para habilitar a funcionalidade da extensão. No entanto, se um aplicativo empacotado precisar dar suporte à ativação inproc de seus CLSIDs para compatibilidade com outros aplicativos que solicitam ativação inproc (CLSCTX_INPROC_SERVER) e atende aos requisitos para registrar um servidor inproc, ele pode registrar o CLSID para ativação inproc e ativação outofproc em um substituto. Nesse caso, é recomendável fornecer os detalhes do servidor inproc em um elemento InProcessServer/Class ou InProcessServer/ClassReference e referenciá-los de um elemento SurrogateServer/InProcessServerClassReference .

Requisitos

Item Valor
Namespace http://schemas.microsoft.com/appx/manifest/com/windows10/4
Minimum OS Version Windows 10 (Build 20348)