Compartilhar via


Registrar serviços e provedores de serviços em MapiSvc.inf

Aplica-se a: Outlook 2013 | Outlook 2016

Instalar um novo provedor em um sistema requer a atualização do arquivo MapiSvc.inf para apontar para o novo provedor. Propriedades padrão definidas durante a configuração, que incluem a seguinte, informem a MAPI onde encontrar a biblioteca de link dinâmico do provedor (.dll):

  • O PR_SERVICE_DLL_NAME é especificado na seção [Serviço de Mensagem] .

  • O PR_PROVIDER_DLL_NAME é especificado na seção [Provedor de Serviços] .

Observação

A expectativa é que você defina o nome do .dll do provedor (sem o sufixo "32"). MAPI, em seguida, carrega seu provedor procurando-o no caminho.

Colocando um caminho em MapiSvc.inf

A maioria dos aplicativos se instala em Arquivos de Programa, exigindo uma atualização para a variável de caminho para permitir que os provedores MAPI funcionem. Com algumas restrições Microsoft Outlook 2010 e o Outlook 2013 podem acomodar caminhos completos para provedores MAPI.

Ao registrar seu provedor no MapiSvc.inf, você pode colocar o caminho completo para o provedor nas propriedades MAPI PR_SERVICE_DLL_NAME e PR_PROVIDER_DLL_NAME.

Em qualquer propriedade, o caminho completo deve estar sem o sufixo "32", porque o MAPI continua a acrescentar isso ao nome do arquivo antes de procurar seu arquivo. Isso significa que, se você registrar o caminho "c:\mypath\myprovider.dll", o MAPI tentará carregar "c:\mypath\myprovider32.dll".

Como o MAPI do Outlook não foi originalmente projetado para acomodar caminhos completos, ele realiza essa inserção do sufixo "32" procurando o primeiro período na cadeia de caracteres, o que significa que os caminhos que contêm outros períodos não podem funcionar, portanto, você não pode usar caminhos como "c:\my.path\myprovider.dll" ou "c:\mypath\my.provider.dll".

Às vezes, em um provedor de loja, você gerará identificadores de entrada usando a função WrapStoreEntryID , que usa como parâmetro o nome do provedor.

Importante

Se você estiver usando caminhos completos em MapiSvc.inf, deverá usar o mesmo caminho em todas as chamadas para WrapStoreEntryID.

Além disso, o caminho que você usa pode ser convertido de e para Unicode usando a página de código fornecida pela função GetACP .

Cuidado

Você sofrerá falha se escolher um caminho que contenha caracteres que não possam sobreviver a uma viagem de ida e volta por meio das funções MultiByteToWideChar e WideCharToMultiByte .

Para uma demonstração dessa funcionalidade, o exemplo de PST encapsulado no GitHub foi revisado - a funcionalidade pertinente está em MergeWithMapiSvc e GenerateProviderPath.