Outlook Interop:有没有办法检查Outlook文件夹是否为只读

本文关键字:Outlook 文件夹 是否 只读 检查 Interop 有没有 | 更新日期: 2023-09-27 18:36:24

我正在用C#编写一段代码,通过Outlook Interop从Outlook获取所有可写日历。Outlook 中的日历只是 Outlook 文件夹,其默认项目类型为 OlItemType.olAppointmentItem 。但是,始终存在只读日历,例如生日日历,如果您将Hotmail帐户添加到Outlook。

有没有办法检测这些只读日历?

Outlook Interop:有没有办法检查Outlook文件夹是否为只读

如果这些是交换帐户,您可以稍微轻松地做到这一点,但您特别提到了 hotmail,因此经过大量研究,执行此操作的唯一方法是使用第三方插件或在 MAPI/ACL 库周围编写自己的包装器。Microsoft从未通过 com 命名空间提供 ACL。

每个人都在建议 Redemption: http://www.dimastr.com/redemption/home.htm,您可以查看他们在此处公开的 RDOACL 功能:

http://www.dimastr.com/redemption/RDOACL.htm

因此,看起来没有专用的方法来检查当前用户是否有权写入 Outlook 文件夹,前提是它可能不是交换文件夹。因此,最可靠的方法可能是尝试创建和删除虚拟项目:

try
{
    ((AppointmentItem)calendarFolder.Items.Add(OlItemType.olAppointmentItem)).Delete();
    // Do whatever you need with this folder.
}
catch
{
    // This probably means the folder is not writeable.
}

请注意,项目类型需要与文件夹默认项目类型匹配。