コード例 #1
0
ファイル: MapiUtils.cs プロジェクト: YHZX2013/exchange_diff
        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);
        }
コード例 #2
0
        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);
        }