Ejemplo n.º 1
0
        public static ActionResult UnRegisterOutlookAddin(Session session)
        {
            session.Log("Begin UnRegisterOutlookAddin");

            try
            {
                OsBitness osBitness = GetOsBitness();
                session.Log("OS bitness is : " + osBitness.ToString());
                OfficeBitness officeBitness = GetOfficeBitness(osBitness);
                session.Log("Office bitness is : " + officeBitness.ToString());
                OfficeRelease officeRelease = GetOfficeRelease(osBitness);
                session.Log("Office release is : " + officeRelease.ToString());

                session.Log("Unregistering Outlook Addin…");
                UnRegisterAddin(osBitness, officeBitness);
                session.Log("Unwhitelisting Addin…");
                UnWhitelistAddin(osBitness, officeBitness, officeRelease);
            }
            catch (Exception ex)
            {
                session.Log("An error occurs while unregistering Outlook Addin : " + ex.Message);
            }

            return(ActionResult.Success);
        }
Ejemplo n.º 2
0
        private static void UnWhitelistAddin(OsBitness osBitness, OfficeBitness officeBitness, OfficeRelease officeRelease)
        {
            try
            {
                RegistryKey HKLM      = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, (officeBitness == OfficeBitness.Office32 ? RegistryView.Registry32 : RegistryView.Registry64));
                RegistryKey officeKey = null;

                switch (officeRelease)
                {
                case OfficeRelease.Office2013:
                    officeKey = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\15.0\Outlook\Resiliency\DoNotDisableAddinList", true);
                    break;

                case OfficeRelease.Office2016:
                    officeKey = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\16.0\Outlook\Resiliency\DoNotDisableAddinList", true);
                    break;
                }
                if (officeKey != null)
                {
                    officeKey.DeleteValue("SmartSingularity.PstBackupAddin", false);
                    officeKey.Close();
                }
                HKLM.Close();
            }
            catch (Exception) { }
        }
Ejemplo n.º 3
0
        private static void RegisterAddin(OsBitness osBitness, OfficeBitness officeBitness)
        {
            string      manifestLocation = osBitness == OsBitness.OS64 ? @"file:///C:/Program Files (x86)/Pst Backup/SmartSingularity.PstBackupAddin.vsto|vstolocal" : @"file:///C:/Program Files/Pst Backup/SmartSingularity.PstBackupAddin.vsto|vstolocal";
            RegistryKey HKLM             = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, (officeBitness == OfficeBitness.Office32 ? RegistryView.Registry32 : RegistryView.Registry64));
            RegistryKey officeKey        = HKLM.CreateSubKey(@"SOFTWARE\Microsoft\Office\Outlook\Addins", true);
            RegistryKey addinKey         = officeKey.CreateSubKey("SmartSingularity.PstBackupAddin", true);

            addinKey.SetValue("Description", (object)"Automatically backup your PST files at closing.", RegistryValueKind.String);
            addinKey.SetValue("FriendlyName", (object)"Pst Backup", RegistryValueKind.String);
            addinKey.SetValue("LoadBehavior", (object)3, RegistryValueKind.DWord);
            addinKey.SetValue("Manifest", (object)manifestLocation, RegistryValueKind.String);

            addinKey.Close();
            officeKey.Close();
            HKLM.Close();
        }
Ejemplo n.º 4
0
        private static void UnRegisterAddin(OsBitness osBitness, OfficeBitness officeBitness)
        {
            try
            {
                RegistryKey HKLM      = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, (officeBitness == OfficeBitness.Office32 ? RegistryView.Registry32 : RegistryView.Registry64));
                RegistryKey officeKey = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\Outlook\Addins", true);

                if (officeKey != null)
                {
                    officeKey.DeleteSubKey("SmartSingularity.PstBackupAddin", true);
                    officeKey.Close();
                }

                HKLM.Close();
            }
            catch (Exception) { }
        }
Ejemplo n.º 5
0
        private static OfficeBitness GetOfficeBitness(OsBitness osBitness)
        {
            RegistryKey HKLM        = Registry.LocalMachine;
            RegistryKey officeKey14 = null;
            RegistryKey officeKey15 = null;
            RegistryKey officeKey16 = null;

            switch (osBitness)
            {
            case OsBitness.OS32:
                return(OfficeBitness.Office32);

            case OsBitness.OS64:
                // Search Office 32Bit
                HKLM        = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
                officeKey14 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\14.0\Outlook\InstallRoot", false);
                officeKey15 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\15.0\Outlook\InstallRoot", false);
                officeKey16 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\16.0\Outlook\InstallRoot", false);
                if (officeKey14 != null || officeKey15 != null || officeKey16 != null)
                {
                    return(OfficeBitness.Office32);
                }

                // Search Office 64Bit
                HKLM        = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
                officeKey14 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\14.0\Outlook\InstallRoot", false);
                officeKey15 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\15.0\Outlook\InstallRoot", false);
                officeKey16 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\16.0\Outlook\InstallRoot", false);
                if (officeKey14 != null || officeKey15 != null || officeKey16 != null)
                {
                    return(OfficeBitness.Office64);
                }
                break;
            }
            throw new Exception("Unable to determine Office bitness");
        }
Ejemplo n.º 6
0
        private static void WhitelistAddin(OsBitness osBitness, OfficeBitness officeBitness, OfficeRelease officeRelease)
        {
            RegistryKey HKLM      = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, (officeBitness == OfficeBitness.Office32 ? RegistryView.Registry32 : RegistryView.Registry64));
            RegistryKey officeKey = null;

            switch (officeRelease)
            {
            case OfficeRelease.Office2010:
                officeKey = HKLM.CreateSubKey(@"SOFTWARE\Microsoft\Office\14.0\Outlook\Resiliency\DoNotDisableAddinList", true);
                break;

            case OfficeRelease.Office2013:
                officeKey = HKLM.CreateSubKey(@"SOFTWARE\Microsoft\Office\15.0\Outlook\Resiliency\DoNotDisableAddinList", true);
                break;

            case OfficeRelease.Office2016:
                officeKey = HKLM.CreateSubKey(@"SOFTWARE\Microsoft\Office\16.0\Outlook\Resiliency\DoNotDisableAddinList", true);
                break;
            }
            officeKey.SetValue("SmartSingularity.PstBackupAddin", (object)1, RegistryValueKind.DWord);

            officeKey.Close();
            HKLM.Close();
        }
Ejemplo n.º 7
0
        private static OfficeRelease GetOfficeRelease(OsBitness osBitness)
        {
            RegistryKey HKLM        = Registry.LocalMachine;
            RegistryKey officeKey14 = null;
            RegistryKey officeKey15 = null;
            RegistryKey officeKey16 = null;

            switch (osBitness)
            {
            case OsBitness.OS32:
                HKLM        = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
                officeKey14 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\14.0\Outlook\InstallRoot", false);
                officeKey15 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\15.0\Outlook\InstallRoot", false);
                officeKey16 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\16.0\Outlook\InstallRoot", false);
                if (officeKey14 != null)
                {
                    return(OfficeRelease.Office2010);
                }
                if (officeKey15 != null)
                {
                    return(OfficeRelease.Office2013);
                }
                if (officeKey16 != null)
                {
                    return(OfficeRelease.Office2016);
                }
                break;

            case OsBitness.OS64:
                HKLM        = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
                officeKey14 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\14.0\Outlook\InstallRoot", false);
                officeKey15 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\15.0\Outlook\InstallRoot", false);
                officeKey16 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\16.0\Outlook\InstallRoot", false);
                if (officeKey14 != null)
                {
                    return(OfficeRelease.Office2010);
                }
                if (officeKey15 != null)
                {
                    return(OfficeRelease.Office2013);
                }
                if (officeKey16 != null)
                {
                    return(OfficeRelease.Office2016);
                }
                HKLM        = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
                officeKey14 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\14.0\Outlook\InstallRoot", false);
                officeKey15 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\15.0\Outlook\InstallRoot", false);
                officeKey16 = HKLM.OpenSubKey(@"SOFTWARE\Microsoft\Office\16.0\Outlook\InstallRoot", false);
                if (officeKey14 != null)
                {
                    return(OfficeRelease.Office2010);
                }
                if (officeKey15 != null)
                {
                    return(OfficeRelease.Office2013);
                }
                if (officeKey16 != null)
                {
                    return(OfficeRelease.Office2016);
                }
                break;
            }
            throw new Exception("Unable to determine Office release");
        }