Что это за кодировка?(Найдено в Outlook / FileSite) - PullRequest
0 голосов
/ 13 марта 2019

Я работаю над надстройкой Outlook VSTO, которая будет подключаться к надстройке iManage FileSite. В настоящее время я пытаюсь получить доступ к идентификатору выбранных папок (в DMS) и заметил, что свойство CurrentFolder.EntryID содержит очень большая шестнадцатеричная строка, которая при преобразовании в UTF-16 выглядит как искаженный ObjectID для iManage. Смотрите ниже (некоторая информация отредактирована):

�"�j���'`�W�vp441!nrtdms:0:!session:REDACTED:!database:TEC:!page:440:??!nrtdms:0:!session:REDACTED:!database:TEC:!publicpagescontainer??!nrtdms:0:!session:REDACTED:!database:TEC:??!nrtdms:0:!session:REDACTED:!explorercontainer??!nrtdms:0:!session:REDACTED:??!nrtmsg:neighborhood:??!nrtmsg:root:

Я работал над некоторым регулярным выражением, чтобы отделить идентификатор папки от остальной части строки, но я не могу не думать, что есть более стабильный метод.

У кого-нибудь есть идеи?

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Структура идентификатора ENTRYID описана в MSDN. Структура ENTRYID используется поставщиками хранилищ сообщений и адресных книг для создания уникальных идентификаторов для своих объектов.

Пользователи

  • abFlags - Битовая маска флагов, предоставляющих информацию, которая описывает объект. Поставщик может установить только первый байт флагов, abFlags [0]; остальные три зарезервированы. Эти флаги не должны быть установлены для постоянных идентификаторов входа; они устанавливаются только для краткосрочных идентификаторов входа. Для клиентов эта структура доступна только для чтения. Следующие флаги могут быть установлены в abFlags [0]:

    • MAPI_NOTRECIP - Идентификатор записи нельзя использовать в качестве получателя сообщения.
    • MAPI_NOTRESERVED - Другие пользователи не могут получить доступ к идентификатору записи.
    • MAPI_NOW - идентификатор записи нельзя использовать в другое время.
    • MAPI_SHORTTERM - Идентификатор записи кратковременный. Все остальные значения в этом байте должны быть установлены, если не разрешено другое использование идентификатора записи.
    • MAPI_THISSESSION - Идентификатор записи нельзя использовать в других сеансах.
  • ab - указывает массив двоичных данных, который используется поставщиками услуг. Клиентское приложение не может использовать этот массив.

Вы можете преобразовать строку в двоичные данные, используя метод PropertyAccessor.StringToBinary , который преобразует строку, указанную в Value, в массив байтов. Для получения дополнительной информации о преобразовании типов при использовании объекта PropertyAccessor см. Рекомендации по получению и настройке свойств .

0 голосов
/ 13 марта 2019

В дополнение к ответу @Eugene Astafiev, формат некоторых идентификаторов записей задокументирован.Разобрать идентификаторы записей PST, Exchange и GAL довольно просто.

Посмотрите на идентификаторы записей с MFCMAPI или OutlookSpy .Вот что OutlookSpy показывает для сообщения PR_ENTRYID в кэшированном хранилище Exchange (нажмите кнопку IMessage, выберите свойство PR_ENTRYID):

abFlags[0]: 00
abFlags[1]: 00
abFlags[2]: 00
abFlags[3]: 00
muid: 5E81754F003E1549B0659F2AEA92E7C2 ({4F75815E-3E00-4915-B065-9F2AEA92E7C2})
Type: 0x0007 (eitLTPrivateMessage)
FolderDatabaseGUID: C7CF2304C77BF64585E8892DD6FF7BAC ({0423CFC7-7BC7-45F6-85E8-892DD6FF7BAC})
FolderGlobalCounter: 0xCAA69A1A0000
Pad1: 0x0000
MessageDatabaseGUID: 4A7CE85ED1AB274C9E20AA3CBFA828B1 ({5EE87C4A-ABD1-4C27-9E20-AA3CBFA828B1})
MessageGlobalCounter: 0x70A650D90100
Pad2: 0x0000
...