Оснастка MMC не может найти стороннюю DLL, расположенную в каталоге PATH - PullRequest
1 голос
/ 04 октября 2011

У меня проблема с 32-разрядными оснастками MMC (на компьютере с сервером x64 2008).Оснастки были успешно зарегистрированы.Когда я запускаю связанный файл .msc с помощью mmc (с 32-битной опцией), имена (имена) оснасток отображаются на LHS, но RHS показывает страницу с ошибкой, которая говорит, что страница не может быть загружена.

Используя procmon, я думаю, что я обнаружил, что проблема связана с тем, что не удалось найти библиотеку DLL, которая также поставляется с продуктом и используется оснасткой.Он находится в каталоге c: \\ bin, и этот каталог указан в переменной среды PATH.Однако MMC, похоже, ищет только в каталоге c: \ windows \ sysWOW6432 (то есть 32-битной версии c: \ windows \ system32 на 64-битной машине).Я не возражаю против этого, если он также продолжит поиск других каталогов, указанных в переменной PATH (которая включает в себя каталог c: \\ bin).

Я проверил эту гипотезу и поместил библиотеки DLL в syswow6432.каталог и вещи, кажется, работают правильно оттуда.

Я бы, очевидно, не хотел бы помещать все специфичные для продукта DLL в системный каталог и предпочел бы хранить их в каталоге для конкретного продукта.

Может ли кто-нибудь объяснить сбой, чтобы найти DLL на PATH и разрешение.

1 Ответ

0 голосов
/ 20 июня 2012

Используйте параметр /codebase для RegAsm.exe при регистрации зависимых сборок. Вы можете указать полный путь к вашей сборке, который будет загружаться с отложенной загрузкой при выборе оснастки из дерева оснасток MMC.

В 64-битных операционных системах MS, при отсутствии /codebase, зависимые сборки / DLL 32-битных оснасток загружаются из каталога SYSWOW64, тогда как 64-битные оснастки загружают зависимые сборки / DLL из system32 каталог. PATH, похоже, не входит в уравнение, хотя, в качестве альтернативы, вы, вероятно, могли бы использовать gacutil.exe для установки зависимых сборок в порок GAC, загрязняющий SYSWOW64.

...