微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据丢失防护策略使 OpenMsgStore 失败 (0x80040312)

如何解决数据丢失防护策略使 OpenMsgStore 失败 (0x80040312)

启用 DLP 策略后,兑换失败并显示以下错误: “所有企业电子邮件都根据您组织中设置的策略受到保护。打开受保护的电子邮件时出错。”

ulLowLevelError: 2147746578 (即 0x80040312)
ulContext: 805701633 (0x30060801)

有什么办法可以解决这个问题吗?

尝试访问 IPMRootFolder 对象的 Store 属性时发生错误

// A prevIoUs version of the code was multi-threaded,it is no longer.
Session = OutlookRpcLoader.new_RDOSession();
Session.logon(ProfileName: profile,ShowDialog: false,NewSession: true);
var stores = Session.Stores;
var store = stores["{STORE-NAME}"];
var root = store.IPMRootFolder;

调用堆栈显示 Redemption.IRDOStore.get_IPMRootFolder() 抛出了异常。

编辑

使用通过 .NET(免注册 COM)中的 RedemptionLoader 类加载的 Redemption 版本 5.22.0.5498 时会出现这种情况。
使用 CreateObject() 从 VBScript 使用 Redemption 版本 5.19.0.5238 进行测试时,不会发生错误
v5.19 和 v5.22 之间有什么变化吗?

解决方法

首先,你需要检测你的代码在哪里运行——是前台线程还是后台线程。我建议检查进程的 ThreadID。前台线程的值设置为 1。所有后台线程的值都将大于 1。如果它是一个辅助线程,您需要在要使用的辅助线程上创建一个新的 Redemption 会话,并将 MAPIOBJECT 属性设置为从主线程检索的对象。例如,VB.NET 中的原始草图:

Dim PrimaryRDOSession As New Redemption.RDOSession()
PrimaryRDOSession.Login([...])
Dim WorkerThread as New System.Threading.Thread(AddressOf ThreadProc)
WorkerThread.Start(PrimaryRDOSession.MAPIOBJECT)

Sub ThreadProc(ByVal param as Object)
    Dim ThdRDOSession As New Redemption.RDOSession()
    ThdRDOSession.MAPIOBJECT = param
    ' do other stuff
End Sub

如果您在辅助线程上,请不要使用在主线程上创建的对象。确保在使用对象时保持一致。

,

我相信这是由阻止未签名二进制文件的 AppLocker 规则引起的。解决方案是对文件进行代码签名或将程序添加到 AppLocker 允许列表中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?