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.