Example #1
0
 internal UnregisterOperationHostSettings(string assemblyPath, SingletonSettings.UnRegisterMode mode,
                                          bool doRegisterCall, SingletonSettings.SignCheckMode signCheck,
                                          SingletonSettings.AddinRegMode addinRegMode)
 {
     AssemblyPath   = assemblyPath;
     Mode           = mode;
     DoRegisterCall = doRegisterCall;
     SignCheck      = signCheck;
     AddinRegMode   = addinRegMode;
 }
Example #2
0
        internal void DeleteComponentKey(SingletonSettings.UnRegisterMode mode, string key)
        {
            RegistryKey[] rootKeys = null;

            switch (mode)
            {
            case SingletonSettings.UnRegisterMode.Auto:
                rootKeys    = new RegistryKey[2];
                rootKeys[0] = Microsoft.Win32.Registry.ClassesRoot;
                rootKeys[1] = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(_userBypass, true);
                break;

            case SingletonSettings.UnRegisterMode.System:
                rootKeys = new RegistryKey[] { Microsoft.Win32.Registry.ClassesRoot };
                break;

            case SingletonSettings.UnRegisterMode.User:
                rootKeys = new RegistryKey[] { Microsoft.Win32.Registry.CurrentUser.OpenSubKey(_userBypass, true) };
                break;

            default:
                throw new IndexOutOfRangeException("mode");
            }

            foreach (RegistryKey item in rootKeys)
            {
                try
                {
                    item.DeleteSubKeyTree(key, false);
                    item.Close();
                }
                catch (System.Security.SecurityException)
                {
                    if (mode != SingletonSettings.UnRegisterMode.Auto)
                    {
                        throw;
                    }
                }
                catch (System.UnauthorizedAccessException)
                {
                    if (mode != SingletonSettings.UnRegisterMode.Auto)
                    {
                        throw;
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
Example #3
0
        internal static AddinClassInformations Create(Assembly addinAssembly, IEnumerable <object> assemblyAttributes,
                                                      SingletonSettings.UnRegisterMode mode, Type addinClassType, IEnumerable <object> addinClassAttributes)
        {
            AssemblyName binaryHeader    = addinAssembly.GetName();
            string       assemblyName    = binaryHeader.Name;
            string       assemblyVersion = binaryHeader.Version.ToString();
            string       assemblyCulture = CultureInfoConversion.ConvertToString(binaryHeader.CultureInfo);
            string       assemblyToken   = TokenConversion.ConvertToString(binaryHeader.GetPublicKeyToken());
            string       runtimeVersion  = addinAssembly.ImageRuntimeVersion;

            string[] classesRoot = null;
            switch (mode)
            {
            case SingletonSettings.UnRegisterMode.Auto:
                classesRoot = new string[] { "HKEY_CLASSES_ROOT", "HKEY_CURRENT_USER\\Software\\Classes" };
                break;

            case SingletonSettings.UnRegisterMode.System:
                classesRoot = new string[] { "HKEY_CLASSES_ROOT" };
                break;

            case SingletonSettings.UnRegisterMode.User:
                classesRoot = new string[] { "HKEY_CURRENT_USER\\Software\\Classes" };
                break;

            default:
                throw new IndexOutOfRangeException("mode");
            }
            string progid        = AttributeReflection.GetAttribute <ProgIdAttribute>(addinClassAttributes).Value;
            string fullClassName = addinClassType.FullName;
            string id            = AttributeReflection.GetAttribute <GuidAttribute>(addinClassAttributes).Value;
            string codebase      = addinAssembly.CodeBase;

            AddinClassInformations result = new AddinClassInformations(
                assemblyName, assemblyVersion, assemblyCulture, assemblyToken,
                runtimeVersion, classesRoot, progid, fullClassName, id, codebase);

            return(result);
        }
        private void DeleteRegistryEntries(Assembly addinAssembly, IEnumerable <object> assemblyAttributes, SingletonSettings.UnRegisterMode mode,
                                           Type addinClassType, IEnumerable <object> addinClassAttributes)
        {
            AddinClassInformation addinClass = AddinClassInformation.Create(
                addinAssembly, assemblyAttributes, mode, addinClassType, addinClassAttributes);

            Registry registry = new Registry();

            registry.DeleteComponentKey(Settings.Mode, addinClass.ProgId);
            registry.DeleteComponentKey(Settings.Mode, "CLSID\\{" + addinClass.Id + "}");
        }