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

docsによると、PyIID オブジェクトが必要です。

ただし、ほとんどの場合、CLSID/IID をパラメーターとして期待する関数は、文字列オブジェクトまたはネイティブ PyIID オブジェクトのいずれかを受け入れます。

そうは言っても、OpenProperty メソッドで使用されるmapi.IID_IMessageを見てきました。

于 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 に答える