Я создал небольшую надстройку ATL, которая реализует 2 интерфейса:
IDTExtensibility2 и IRibbonExtensibility
XML настройки просто загружается из файла.
Внутри кода C # кодирование действительно простое:
RegistryKey key = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Office\Word\Addins\RibbonLoaderLib.RibbonLoader");
key.SetValue("LoadBehavior",2,RegistryValueKind.DWord);
key.SetValue("Description","Ribbon Loader Add-In",RegistryValueKind.String);
key.SetValue("FriendlyName","Ribbon Loader Add-In",RegistryValueKind.String);
wordApp_.COMAddIns.Item("RibbonLoaderLib.RibbonLoader").Connect = true;