Регистрация служб и поставщиков услуг в MapiSvc.inf
Область применения: Outlook 2013 | Outlook 2016
Для установки нового поставщика в системе необходимо обновить файл MapiSvc.inf, чтобы он указывал на нового поставщика. Стандартные свойства, заданные во время настройки, в том числе следующие, сообщают MAPI, где найти библиотеку динамической компоновки поставщика (.dll):
PR_SERVICE_DLL_NAME указывается в разделе [Служба сообщений].
PR_PROVIDER_DLL_NAME указывается в разделе [Поставщик услуг].
Примечание.
Ожидается, что вы задаете имя .dll поставщика (без суффикса "32"). Затем MAPI загружает поставщика, ища его по пути.
Добавление пути в MapiSvc.inf
Большинство приложений устанавливаются в разделе Program Files, требуя обновления переменной path, чтобы разрешить работу поставщиков MAPI. С несколькими ограничениями, Microsoft Outlook 2010, русская версия и Outlook 2013 могут вместить полные пути к поставщикам MAPI.
При регистрации поставщика в MapiSvc.inf можно поместить полный путь к поставщику в свойствах MAPI PR_SERVICE_DLL_NAME и PR_PROVIDER_DLL_NAME.
В любом из свойств полный путь должен быть без суффикса "32", так как MAPI продолжает добавлять его в имя файла, прежде чем искать файл. Это означает, что если зарегистрировать путь "c:\mypath\myprovider.dll", MAPI попытается загрузить "c:\mypath\myprovider32.dll".
Так как MAPI Outlook изначально не был разработан для размещения полных путей, он выполняет вставку суффикса "32" путем поиска первой точки в строке, что означает, что пути, содержащие другие точки, не могут работать, поэтому нельзя использовать пути, такие как "c:\my.path\myprovider.dll" или "c:\mypath\my.provider.dll".
Иногда в поставщике хранилища вы создаете идентификаторы входа с помощью функции WrapStoreEntryID , которая принимает в качестве параметра имя поставщика.
Важно!
Если вы используете полные пути в MapiSvc.inf, необходимо использовать тот же путь во всех вызовах WrapStoreEntryID.
Кроме того, используемый путь может быть преобразован в Юникод и из нее с помощью кодовой страницы, предоставленной функцией GetACP .
Предостережение
Если вы выберете путь, содержащий символы, которые не могут выжить при таком цикле с помощью функций MultiByteToWideChar и WideCharToMultiByte , произойдет сбой.
Чтобы проиллюстрировать эту функцию, был изменен пример упакованный PST на сайте GitHub. Соответствующая функциональность доступна в mergeWithMapiSvc и GenerateProviderPath.