在尝试读取文件夹的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
答案 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标志打开文件夹对象。