Partilhar via


Registrando o servidor DLL para ativação substituta

Um servidor DLL será carregado em um processo substituto nas seguintes condições:

  • Deve haver um valor AppID especificado sob a chave CLSID no Registro e uma chave AppID correspondente.
  • Em uma chamada de ativação, o CLSCTX_LOCAL_SERVER bit é configurado e a chave CLSID não especifica LocalServer32, LocalServerou LocalService. Se outras partes de CLSCTX estiverem configuradas, o algoritmo de processamento de para os sinalizadores de execução em processo, local ou remoto será seguido.
  • A chave CLSID contém a subchave InprocServer32.
  • A DLL especificada na chave InprocServer32 existe.
  • O valor de DllSurrogate existe sob a chave AppID.

Se houver um LocalServer, LocalServer32ou LocalService, indicando a existência de um EXE, o servidor ou serviço EXE sempre será iniciado em preferência ao carregamento de um servidor DLL em um processo substituto.

O DllSurrogate named-value deve ser especificado para que ocorra a ativação substituta. A ativação refere-se a chamadas para qualquer uma destas funções de ativação:

Para iniciar uma instância do substituto fornecido pelo sistema, defina o valor de DllSurrogate para uma cadeia de caracteres vazia ou para NULL. Para especificar o lançamento de um substituto personalizado, defina o valor para o caminho do substituto.

Se RemoteServerName e DllSurrogate forem especificados para o mesmo AppID, o valor RemoteServerName será ignorado e o valor DllSurrogate causará uma ativação no computador local. Para ativação substituta remota, especifique RemoteServerName, mas não DllSurrogate no cliente e especifique DllSurrogate no servidor.

Um servidor DLL projetado para sempre ser executado sozinho em seu próprio processo substituto é melhor configurado com um AppID igual ao seu CLSID. Em AppID, basta especificar um valor nomeado DllSurrogate com uma cadeia vazia.

É melhor configurar um servidor DLL projetado para ser executado sozinho em seu próprio processo substituto e para atender a vários clientes em uma rede com um valor de RunAs especificado na chave do Registro AppID. Se o RunAs especifica "Usuário interativo" ou uma identidade de usuário específica depende da interface do usuário, da segurança e de outros requisitos do servidor. Quando um valor de RunAs é especificado, apenas uma instância do servidor é carregada para atender a todos os clientes, independentemente da identidade do cliente. Por outro lado, não configure o servidor com RunAs se a intenção for ter uma instância do servidor DLL em execução substituta para atender a cada identidade de cliente remoto.

Requisitos do servidor DLL

Partilha de Substituto