public static Guid GetSystemMailboxGuid(Guid mdbGuid, string dcName, NetworkCredential cred, FindServerFlags flags) { Guid guid = Guid.Empty; if ((flags & FindServerFlags.ForceRediscovery) == FindServerFlags.None) { lock (MapiUtils.syncRoot) { if (MapiUtils.mdbToSystemMailboxMap.TryGetValue(mdbGuid, out guid)) { return(guid); } } } try { ADSystemMailbox adsystemMailbox = MapiUtils.GetADSystemMailbox(mdbGuid, dcName, cred); guid = adsystemMailbox.ExchangeGuid; } catch (SystemMailboxNotFoundPermanentException) { if ((flags & FindServerFlags.AllowMissing) == FindServerFlags.None) { throw; } return(Guid.Empty); } lock (MapiUtils.syncRoot) { MapiUtils.mdbToSystemMailboxMap[mdbGuid] = guid; } return(guid); }
private MailboxSession OpenSystemMailbox() { MrsTracer.Provider.Function("StorageMailbox.OpenSystemMailbox", new object[0]); base.CheckDisposed(); Server server = LocalServer.GetServer(); ADSystemMailbox adsystemMailbox = MapiUtils.GetADSystemMailbox(base.MdbGuid, null, null); MailboxSession result; using (base.RHTracker.Start()) { ExchangePrincipal mailboxOwner = ExchangePrincipal.FromADSystemMailbox(ADSessionSettings.FromRootOrgScopeSet(), adsystemMailbox, server); result = MailboxSession.OpenAsSystemService(mailboxOwner, CultureInfo.InvariantCulture, "Client=MSExchangeMigration"); } return(result); }