Мы разработали продукт, который является стандартным дополнением VSTO (Word 2010 и Word 2013, только x86). По умолчанию, когда он установлен, он устанавливается для всех пользователей (т.е. Записи реестра addin вставляются в HKLM - HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node]\Microsoft\Office\Word\Addins
).
Когда значение для ключа reg LoadBehavior
установлено на 0x3
(т.е. "Load at Startup" ), добавление работает отлично, однако, когда мы устанавливаем значение для LoadBehavior
в 0x10
(т.е. "Загрузка по требованию" ), добавление не работает, как и следовало ожидать:
Из-за UAC (и что Word не запускается с повышением) значение LoadBehavior
в HKLM не изменяется с 0x10
до 0x9
, а вместо этого переопределяется созданием ключа LoadBehavior
(со значением 0x9
) в улье HKCU.
К сожалению, мы обнаружили, что это переопределенное значение HKCU не принимается во внимание , если в манифестах HKCU не присутствует ключ Manifest вместе с LoadBehavior
). Дополнительная информация по этой теме: https://social.msdn.microsoft.com/Forums/vstudio/en-US/3776734b-333e-423b-9c08-7c7a441c3e94/load-behavior-and-word-addin?forum=vsto
"Очевидным" средством для этой проблемы является запись Manifest
в HKCU для каждого пользователя (а также в HKLM) во время установки ИЛИ, когда каждый пользователь запускает addin в первый раз, Однако есть некоторые серьезные недостатки в этом подходе:
- Для удаления приложения требуется удалить все значения HKCU пользователя, чтобы пользователи не столкнулись с проблемами при загрузке (это не рекомендуется и создает другие проблемы/сложности, такие как необходимость использования Active Setup - Удалить реестр ключи под HKCU для каждой установки машины).
- Пользователи, которые имеют эти значения в своем (роуминге) ульце HKCU, испытывают проблемы при входе на компьютер в том же домене, у которого нет нашего дополнения.
Является ли это ошибкой, что манифест не получен из HKLM, где LoadBehavior
установлен соответствующим образом в HKCU? Я думаю, что эта проблема будет решена, если LoadBehavior
в HKLM можно переопределить в HKCU без необходимости переопределения значения Manifest
.
Кто-нибудь знает, как преодолеть эту проблему?