首页 > 解决方案 > 尝试访问自动完成流时出现 COMException (0x80040102)

问题描述

我想访问 Outlook 2013 中的自动完成(昵称)流,以便我可以让用户从列表中选择电子邮件地址。

我尝试使用我找到的这个 VB 代码,但是当我运行这个版本时,它会抛出一个异常。

public byte[] GetAutocompleteBytes()
{
     Outlook.NameSpace n = ApplicationGlobal.GetNamespace("MAPI");
     Outlook.MAPIFolder f = n.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
     Outlook.StorageItem si = f.GetStorage("IPM.Configuration.Autocomplete", OlStorageIdentifierType.olIdentifyByMessageClass);
     Outlook.PropertyAccessor pa = si.PropertyAccessor;
     byte[] autocompletebytes = (byte[])pa.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x7C090102");
     return autocompletebytes;
}

例外是“System.Runtime.InteropServices.COMException (0x80040102) - 无法在此文件夹中创建存储项目。该文件夹是只读的,或者此处不允许存储项目”(但在我的语言中,请原谅不准确之处)。我找不到与此异常相关的任何内容。当 f.GetStorage() 被调用时,它会被正确抛出,我真的很困惑,因为我可以在 OutlookSpy 中看到存储项目,并且代码的创建者似乎确信它会起作用。我已经阅读了Microsoft 文档和其他一些资料,但没有发现任何可以帮助我解决这个问题的方法。我错过了什么?

标签: c#outlookvsto

解决方案


推荐阅读