Office 2007 включает SafeDllSearchMode в реестре.
http://msdn.microsoft.com/en-us/library/ms682586%28VS.85%29.aspx
С SafeDlLSearchMode текущий каталог больше не ищется.Чтобы отключить его, они утверждают, что вы можете зайти в regedit и установить для HKLM / System / CurrentControlSet / Control / SessionManager / SafeDllSearchMode значение 0, но у меня это не сработало.Вызов SetDllDirectory для текущего каталога DID работает для меня, хотя это работает, только если вы ориентируетесь на XP SP1 +.
Причина, по которой это вызвало проблемы в моем конкретном приложении, заключается в том, что при запуске исполняемого файла из отладчика мы сохраняемисполняемый файл в другом каталоге, чем текущий каталог со всеми другими файлами сборки.Когда мы запускаем вне Visual Studio, мы сначала копируем исполняемый файл в каталог со всеми другими DLL.Каталог, из которого вызывается исходный исполняемый файл, ВСЕГДА находится в пути поиска, поэтому, если вы сохраните свой исполняемый файл и свои библиотеки вместе, вы никогда не столкнетесь с этой проблемой.
Тем не менее, для Microsoft довольно сложно изменитьпуть поиска DLL под нами, как это.