MMC管理单元无法找到位于PATH目录中的第三方DLL

时间:2011-10-04 14:34:24

标签: dll path mmc syswow64

我遇到了32位MMC管理单元的问题(在x64服务器2008机器上)。管理单元已成功注册。当我使用mmc(带32位选项)启动associated.msc文件时,管理单元的名称显示在LHS上,但RHS显示错误页面,表明无法加载页面。 / p>

使用procmon,我认为我已经发现问题与找不到产品附带并由管理单元使用的DLL有关。它位于目录c:\\ bin中,此目录在PATH环境变量中指定。但是,MMC似乎只能在c:\ windows \ sysWOW6432目录中查找(即64位计算机上的32位版本的c:\ windows \ system32)。如果它还继续搜索PATH上指定的其他目录(包括c:\\ bin目录),我不介意这一点。

我已经测试了这个假设并将DLL放在syswow6432目录中,事情似乎从那里开始正常工作。

我显然不想将所有特定于产品的DLL放在系统目录中,而是希望将它们保存在产品特定目录中。

任何人都可以解释在PATH和分辨率上找不到DLL的错误。

1 个答案:

答案 0 :(得分:0)

注册从属程序集时,请使用/codebase的{​​{1}}选项。您可以指定程序集的完全限定路径,当从MMC管理单元树中选择管理单元时,该路径将延迟加载。

在64位MS操作系统上,如果没有RegAsm.exe,则从/codebase目录加载32位管理单元的依赖程序集/ DLL,而64位管理单元加载依赖程序集/ DLL来自SYSWOW64目录。 system32似乎没有计入等式,但是,您可以使用PATH将依赖程序集安装到GAC副污染SYSWOW64中。