1

在尝试读取文件夹的 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 类型。我刚刚收到这个错误:

属性错误:'module' object has no attribute 'IID_IExchangeModifyTable'

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

谢谢-侯爵

4

3 回答 3

1

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

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

也就是说,我已经看到mapi.IID_IMessage与 OpenProperty 方法一起使用。

于 2010-09-02T13:36:05.093 回答
1

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

于 2010-09-02T17:12:06.007 回答
0

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

于 2011-04-27T21:33:57.390 回答