У меня есть Дополнение Outlook 2007, которое я недавно наследовал и в настоящее время существует проблема в производстве, где некоторые пользователи отключали свое дополнение периодически и по-видимому случайным образом. Нет никаких журналов от Дополнения и существует попытка/выгода (и поешьте), блоки вокруг каждого вызова метода/события в дополнительный код. Я сделал некоторый поиск с помощью Google и нашел, что Outlook делает это "мягкое - отключает" Дополнений, если существуют необработанные исключения, брошенные до Outlook.
Из того, что я могу сказать, что нет никаких исключений, которые подбрасываются от дополнения. То, что я хотел бы сделать, любой 1) Создают некоторый глобальный обработчик исключений в дополнении, чтобы быть на 100% уверенным, что все исключения пойманы. Или 2) Так или иначе прислушиваются к перспективе, "запрещающей" дополнение в реестре, и имеющий этого слушателя удаляют reg ключ, который устанавливает перспектива.
Я попытался сделать № 1 следующим:
AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;
System.Windows.Forms.Application.ThreadException += Application_ThreadException;
но ни один не был успешен.
Я понимаю ту Систему. Windows. Формы. Приложение. ThreadException не обязательно обращается к Дополнениям Outlook, но я полагал, почему бы не попробовать его.
Кроме того, я читал, тот Outlook запускает отдельный AppDomain для Дополнений, таким образом, я надеялся что AppDomain. CurrentDomain работал бы на это. Я написал некоторый код, который выдает исключения намеренно для тестирования и не мог получить запись ни в одно из этих событий, и Outlook продолжал отключать Дополнение.
Любая справка/понимание значительно ценилась бы.
когда аддин outlook отключается, он изменяет поведение загрузки с 3 на 2. Вы можете проверить это поведение загрузки из реестра, чтобы определить, отключен аддин или нет.