使用python修改文件夹的Exchange ACL

时间:2010-09-02 12:08:42

标签: python exchange-server mapi pywin32

在尝试读取文件夹的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'

有没有人知道另一种通过MAPI(和python)从交换中获取和修改ACL数据的方法?

由于 - Marquies

3 个答案:

答案 0 :(得分:1)

根据docs,您需要一个PyIID对象。

  

但是,几乎在所有情况下,   期望CLSID / IID为的函数   param将接受一个字符串   对象或本机PyIID对象。

那就是说,我见过与OpenProperty方法一起使用的 mapi.IID_IMessage

答案 1 :(得分:1)

IExchangeModifyTable在edkmdb.h中声明 你在python中使用mapi33吗?该接口甚至在mapi33中声明了吗? 您可以在兑换中使用RDOFolder.ACL:http://www.dimastr.com/redemption/rdo/RDOACL.htm

答案 2 :(得分:0)

看起来您正在尝试访问邮件存储对象上的ACL表。据我所知,ACL表特定于文件夹对象,在消息存储库中不存在。尝试使用“mystore”对象打开存储中的特定文件夹,然后在文件夹对象上调用OpenProperty以检索ACL表。确保使用指定的MAPI_NO_CACHE和MAPI_MODIFY标志打开文件夹对象。