Модификация Exchange ACL для папок с питоном - PullRequest
1 голос
/ 02 сентября 2010

при попытке прочитать таблицу ACL для папки я столкнулся с этой проблемой:

В инструменте C ++ (MFCMAPI) этот метод используется для получения свойства PR_ACL_TABLE в используемом типе данных:

// Open the table in an IExchangeModifyTable interface
 EC_H(lpMAPIProp->OpenProperty(
  ulPropTag,
  (LPGUID)&IID_IExchangeModifyTable,
  0,
  MAPI_DEFERRED_ERRORS,
  (LPUNKNOWN FAR *)&lpExchTbl));

Я решил сделать это в python win32:

table = mystore.OpenProperty(mapitags.PR_ACL_TABLE, IID_IExchangeModifyTable, 0 , mapi.MAPI_DEFERRED_ERRORS)

Но похоже, что расширение MAPI не знает тип IID_IExchangeModifyTable.Я только что получил эту ошибку:

AttributeError: 'module' object has no attribute 'IID_IExchangeModifyTable '

Кто-нибудь знает другой способ получения и изменения данных ACL от обмена через MAPI (иpython)?

Спасибо - маркизы

Ответы [ 3 ]

1 голос
/ 02 сентября 2010

IExchangeModifyTable объявлен в edkmdb.h Вы используете mapi33 в Python?Этот интерфейс даже объявлен в mapi33?Вы можете использовать RDOFolder.ACL при погашении: http://www.dimastr.com/redemption/rdo/RDOACL.htm

1 голос
/ 02 сентября 2010

Согласно документам вам нужен объект PyIID.

Однако почти во всех случаях функции, которые ожидают CLSID / IID как param примет либо строку объект или собственный объект PyIID.

Тем не менее, я видел mapi.IID_IMessage , используемый с методом OpenProperty.

0 голосов
/ 28 апреля 2011

Похоже, вы пытаетесь получить доступ к таблице ACL на объекте хранилища сообщений.Насколько я знаю, таблицы ACL специфичны для объектов папок и не существуют в хранилищах сообщений.Попробуйте использовать объект «mystore», чтобы открыть определенную папку в хранилище, а затем вызвать OpenProperty для объекта папки, чтобы получить таблицу ACL.Убедитесь, что вы открываете объект папки с указанными флагами MAPI_NO_CACHE и MAPI_MODIFY.

...