我在RDS设置中遇到了一个奇怪的问题。当以普通用户身份运行Outlook时,我在尝试连接到会话时得到以下异常:
System.Runtime.InteropServices。COMException (0x8000FFFF):接口不支持在Redemption.IRDOSession。set_MAPIOBJECT(对象值)
但是,当以管理员身份运行Outlook(但使用相同的Exchange邮箱)时,没有错误并且一切正常。我试过启用和不启用Exchange缓存模式,这似乎没有任何区别。
c#代码是这样的:…RDOSession session = RedemptionLoader.new_RDOSession();会话。MAPIOBJECT = applicationObject.Session.MAPIOBJECT;…版本:Windows Server 2019,版本1809。Outlook 2019 MSO(16.0.10386.20017) 64位。救赎5.5.0.3218 .
欢迎有任何想法:)
不要在VSTO插件的二级线程上访问applicationObject.Session.MAPIOBJECT
。将其值保存在主线程的专用变量/成员字段中,并在次线程中使用该变量来设置RDOSession.MAPIOBJECT
属性-这样只有IMAPISession
MAPI接口被封送,而不是Application OOM对象(不喜欢它)。
在主线程上设置MAPIOBJECT无法修复错误。但是,删除注册表项
"HKLMSOFTWAREMicrosoftWindowsCurrentVersionPreviewHandlersMicrosoft Windows MAPI Preview Handler">
固定它。
在我最初的问题中,我忘了提到(对不起),就在Redemption异常之前,有一个"Microsoft Office outlook";弹出提示"要么没有默认的邮件客户端,要么当前的邮件客户端无法满足邮件请求"。所以我猜这是导致Remption异常的原因,即使我还没有弄清楚根本原因,或者为什么它在作为管理员运行时工作。