public static void RegisterAddIn( Type t, SupportedSoftwareVersionEnum supportedSoftwareVersion, string softwareVersion, bool loadOnStartup, string addinVersion) { RegInfo info = new RegInfo(t); using (RegistryKey keyClsid = Registry.ClassesRoot.CreateSubKey(@"CLSID\" + info.AddInGuid)) { keyClsid.SetValue(null, info.Title); keyClsid.CreateSubKey(@"Implemented Categories\{39AD2B5C-7A29-11D6-8E0A-0010B541CAA8}"); using (RegistryKey keySettings = keyClsid.CreateSubKey("Settings")) { keySettings.SetValue("AddInType", "Standard"); keySettings.SetValue("LoadOnStartup", (loadOnStartup ? "1" : "0")); switch (supportedSoftwareVersion) { case SupportedSoftwareVersionEnum.kSupportedSoftwareVersionEqualTo: keySettings.SetValue("SupportedSoftwareVersionEqualTo", softwareVersion); break; case SupportedSoftwareVersionEnum.kSupportedSoftwareVersionGreaterThan: keySettings.SetValue("SupportedSoftwareVersionGreaterThan", softwareVersion); break; case SupportedSoftwareVersionEnum.kSupportedSoftwareVersionLessThan: keySettings.SetValue("SupportedSoftwareVersionLessThan", softwareVersion); break; case SupportedSoftwareVersionEnum.kSupportedSoftwareVersionNotEqualTo: keySettings.SetValue("SupportedSoftwareVersionNotEqualTo", softwareVersion); break; default: keySettings.SetValue("SupportedSoftwareVersionGreaterThan", softwareVersion); break; } keySettings.SetValue("Version", addinVersion); } using (RegistryKey keyDescription = keyClsid.CreateSubKey("Description")) { keyDescription.SetValue(null, info.Description); } } }