How to distinguish outlook calendars in c# code ?

Yevgen Chepurko 1 Reputation point

When a person from one company shares their calendar to a person from another company, the shared calendar finally appears as a copy inside main calendar.
The same place where private calendars resign.
We need a way in c# code for outlook automation to distinguish such calendars.
Please see below c# code snipplet demonstrating the issue:

// use Microsoft.Office.Interop.Outlook.dll as ref to the project
using System;

using System.Runtime.InteropServices;

using Microsoft.Office.Interop.Outlook;

var outlookApp = new Microsoft.Office.Interop.Outlook.Application();

var ns = outlookApp.GetNamespace("MAPI");
var defaultCalendarFolder = ns.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
var foldersInsideDefaultFolder = defaultCalendarFolder.Folders;
for (int i = 1; i <= foldersInsideDefaultFolder.Count; i++)
MAPIFolder item = foldersInsideDefaultFolder[i];
Console.WriteLine($"Calendar: {item.Name}");

             // how can we distinguish a private calendar from a shared one here ????????????


Outlook Management
Outlook Management
Outlook: A family of Microsoft email and calendar products.Management: The act or process of organizing, handling, directing or controlling something.
5,009 questions
{count} votes

1 answer

Sort by: Most helpful
  1. Eugene Astafiev 891 Reputation points

    The Outlook object model doesn't provide anything for that out of the box. The only possible solution is to use the NameSpace.GetSharedDefaultFolder method which returns a Folder object that represents the specified default folder for the specified user. So, you may try to retrieve one and check whether it is yours.

    However, you may try using a low-level API on which Outlook is based on - Extended MAPI. You may try to check out permissions of the folder, see Update Folder Permissions using VBA for more information.

    0 comments No comments